![](/img/trans.png)
[英]How to check if an id in one array of json objects exists in another nested array of json objects?
[英]How to check if the ID in an array of objects is the same as the ID in another array of objects?
我有兩個對象數組。 第一個包含用戶在公司的假期和休假信息。 第二個包含公司輸入的休假和休假類型。 這是我的 arrays;
用戶許可期數組;
permitPeriod: [
{
"id":"681ccdfa-ffa9-444f-85d0-cd52dd3fd6aa",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"userId":"10e8b6c0-5c17-4b75-872f-062d3716d7a7",
"permissionRightStartDate":"01 July 2022",
"permissionRightEndDate":"03 July 2022",
"active":false,
"permitPeriod":"2",
"permitPeriodType":"05097d26-f04d-483b-bdd9-fa51dc40046d",
"createdAt":"2022-07-27T12:42:03.948+00:00",
"state":"Deactivated"
},
{
"id":"cd7fa524-ee24-4a03-b654-4a7a8ad78fec",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"userId":"10e8b6c0-5c17-4b75-872f-062d3716d7a7",
"permissionRightStartDate":"27 July 2022",
"permissionRightEndDate":"31 July 2022",
"active":false,
"permitPeriod":"2",
"permitPeriodType":"7b987436-ead1-47b6-9ed1-cef2a857f114",
"createdAt":"2022-07-27T12:22:40.360+00:00",
"state":"Deactivated"
}
]
這是休假類型列表;
leaveTypes:[
{
"id":"034cee3b-59ef-4b02-99c1-ec69fc28c6bb",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"wageStatus":1,
"leaveType":"Yearly Leave",
"abbreviation":null,
"status":true
},
{
"id":"05097d26-f04d-483b-bdd9-fa51dc40046d",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"wageStatus":1,
"leaveType":"Reported Leave",
"abbreviation":null,
"status":true
},
{
"id":"5d5f46d0-48b2-4bf8-b400-93df1b928cd9",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"wageStatus":1,
"leaveType":"Sunday",
"abbreviation":null,
"status":true
},
{
"id":"6790f3df-b7c8-4f59-ad5c-6059aa3bcf59",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"wageStatus":1,
"leaveType":"Birth Leave",
"abbreviation":null,
"status":true
},
{
"id":"6eb384d7-3bde-49a2-abf3-0ce61f6679f2",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"wageStatus":1,
"leaveType":"Unpaid Leave",
"abbreviation":null,
"status":true
},
{
"id":"7b987436-ead1-47b6-9ed1-cef2a857f114",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"wageStatus":1,
"leaveType":"Death Leave",
"abbreviation":null,
"status":true
},
{
"id":"a001f535-e919-47bb-93d3-1beb61a93da0",
"companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10",
"wageStatus":0,
"leaveType":"Bonus Leave",
"abbreviation":"P",
"status":true
},
]
這兩個 arrays 都可以隨時更改。 用戶可以向系統請求許可,或者公司可以在 leaveTypes 列表中添加或刪除休假類型。 換句話說,這兩個 arrays 不在 static 變量中。
我想做的是,比較這些。 這是我的邏輯;
如果 permitPeriod 數組中的元素之一的 ID 等於 leaveTypes arrays 中的元素之一的 ID,我只需將該元素的名為 permitPeriod.permitPeriodName 的變量設置為具有相同 ID 的 leaveType.leaveType。 因此,使用用戶權限信息中的permitPeriodType ID,我可以將leaveTypes數組中匹配數據的字符串值顯示在表格中。
這是我嘗試過的;
if (this.leaveTypes != null) {
for(var i = 0; this.permitPeriod.length; i++){
for(var j = 0; this.leaveTypes.length; j++){
if(this.permitPeriod[i].permitPeriodType == this.leaveTypes[j].id){
this.permitPeriod[i].permitPeriodName = this.leaveTypes[j].leaveType;
}
}
}
所以基本上我想要做的是搜索 arrays,在其中一個元素中找到公共 ID,並將其中一個元素的值相等。 我怎么做? 提前致謝。
更新這是我發送請求以獲取permitPeriod(s)
時的響應
所以沒有來自響應的permitPeriodName
。 當它等於 leaveType.leaveType 時,我需要創建並推送該變量
Array.map 與 Array.find 里面:
const permitPeriod = [ { "id":"681ccdfa-ffa9-444f-85d0-cd52dd3fd6aa", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "userId":"10e8b6c0-5c17-4b75-872f-062d3716d7a7", "permissionRightStartDate":"01 July 2022", "permissionRightEndDate":"03 July 2022", "active":false, "permitPeriod":"2", "permitPeriodType":"05097d26-f04d-483b-bdd9-fa51dc40046d", "createdAt":"2022-07-27T12:42:03.948+00:00", "state":"Deactivated" }, { "id":"cd7fa524-ee24-4a03-b654-4a7a8ad78fec", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "userId":"10e8b6c0-5c17-4b75-872f-062d3716d7a7", "permissionRightStartDate":"27 July 2022", "permissionRightEndDate":"31 July 2022", "active":false, "permitPeriod":"2", "permitPeriodType":"7b987436-ead1-47b6-9ed1-cef2a857f114", "createdAt":"2022-07-27T12:22:40.360+00:00", "state":"Deactivated" } ]; const leaveTypes = [ { "id":"034cee3b-59ef-4b02-99c1-ec69fc28c6bb", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Yearly Leave", "abbreviation":null, "status":true }, { "id":"05097d26-f04d-483b-bdd9-fa51dc40046d", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Reported Leave", "abbreviation":null, "status":true }, { "id":"5d5f46d0-48b2-4bf8-b400-93df1b928cd9", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Sunday", "abbreviation":null, "status":true }, { "id":"6790f3df-b7c8-4f59-ad5c-6059aa3bcf59", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Birth Leave", "abbreviation":null, "status":true }, { "id":"6eb384d7-3bde-49a2-abf3-0ce61f6679f2", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Unpaid Leave", "abbreviation":null, "status":true }, { "id":"7b987436-ead1-47b6-9ed1-cef2a857f114", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Death Leave", "abbreviation":null, "status":true }, { "id":"a001f535-e919-47bb-93d3-1beb61a93da0", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":0, "leaveType":"Bonus Leave", "abbreviation":"P", "status":true }, ]; const result = permitPeriod.map(pp => { const leaveType = leaveTypes.find(lt => lt.id === pp.permitPeriodType); if (leaveType) { return {...pp, permitPeriodName: leaveType.leaveType}; } return pp; }); console.log(result);
您的代碼基本上是正確的,您只需將循環的分解條件從for(var i = 0; this.permitPeriod.length; i++)
更改for(var i = 0; i < this.permitPeriod.length; i++)
從for(var j = 0; this.leaveTypes.length; j++)
到for(var j = 0; j < this.leaveTypes.length; j++)
const permitPeriod = [ { "id":"681ccdfa-ffa9-444f-85d0-cd52dd3fd6aa", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "userId":"10e8b6c0-5c17-4b75-872f-062d3716d7a7", "permissionRightStartDate":"01 July 2022", "permissionRightEndDate":"03 July 2022", "active":false, "permitPeriod":"2", "permitPeriodType":"05097d26-f04d-483b-bdd9-fa51dc40046d", "createdAt":"2022-07-27T12:42:03.948+00:00", "state":"Deactivated" }, { "id":"cd7fa524-ee24-4a03-b654-4a7a8ad78fec", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "userId":"10e8b6c0-5c17-4b75-872f-062d3716d7a7", "permissionRightStartDate":"27 July 2022", "permissionRightEndDate":"31 July 2022", "active":false, "permitPeriod":"2", "permitPeriodType":"7b987436-ead1-47b6-9ed1-cef2a857f114", "createdAt":"2022-07-27T12:22:40.360+00:00", "state":"Deactivated" } ]; const leaveTypes = [ { "id":"034cee3b-59ef-4b02-99c1-ec69fc28c6bb", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Yearly Leave", "abbreviation":null, "status":true }, { "id":"05097d26-f04d-483b-bdd9-fa51dc40046d", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Reported Leave", "abbreviation":null, "status":true }, { "id":"5d5f46d0-48b2-4bf8-b400-93df1b928cd9", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Sunday", "abbreviation":null, "status":true }, { "id":"6790f3df-b7c8-4f59-ad5c-6059aa3bcf59", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Birth Leave", "abbreviation":null, "status":true }, { "id":"6eb384d7-3bde-49a2-abf3-0ce61f6679f2", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Unpaid Leave", "abbreviation":null, "status":true }, { "id":"7b987436-ead1-47b6-9ed1-cef2a857f114", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":1, "leaveType":"Death Leave", "abbreviation":null, "status":true }, { "id":"a001f535-e919-47bb-93d3-1beb61a93da0", "companyId":"535f37cc-97cb-461b-9626-f85dc9e59c10", "wageStatus":0, "leaveType":"Bonus Leave", "abbreviation":"P", "status":true }, ]; if (leaveTypes;= null) { for(var i = 0. i < permitPeriod;length; i++){ for(var j = 0. j < leaveTypes;length. j++){ if(permitPeriod[i].permitPeriodType == leaveTypes[j].id){ permitPeriod[i].permitPeriodName = leaveTypes[j];leaveType. } } } } console;log(permitPeriod)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.