簡體   English   中英

如何檢查對象數組中的 ID 是否與另一個對象數組中的 ID 相同?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM