簡體   English   中英

將嵌套數組與另一個數組進行比較,如果值相同則賦值

[英]Compare a nested array with another array and assign if values are same

我有兩個帶有動態值的 arrays,我需要將 arrayA1-> KEY 與 arrayA2-> ID 和 nestedArray --> ID 進行比較,將 arrayA1 的值分配給 arrayA2 的嵌套數組,並以與 arrayA2 相同的格式返回數組。

這里在每個對象的arrayA1中,最后一個鍵需要分配或與arrayA2 -> ID進行比較,剩余的值需要分配給arrayA1的相應object的arrayA2的nestedArray,其中如果ID與arrayA1鍵匹配,則在nestedArray中分配arrayA1 的值到嵌套數組“isVerificationMet”。

下面是arrayA1:

 arrayA1 = [{ 13928: false, 13932: true, 13935: true, 13995: false, }, { 13927: true, 14024: false, }, { 13906: false, 13935: true, 13928: true, 14029: false, } ]

這是arrayA2:-

 arrayA2 = [{ id: 13995, nestedArray: [{ id: 13928, isVerificationMet: false }, { id: 13932, isVerificationMet: false }, { id: 13935, isVerificationMet: false }, ] }, { id: 14024, nestedArray: [{ id: 13927, isVerificationMet: false }, ] }, { id: 14029, nestedArray: [{ id: 13906, isVerificationMet: false }, { id: 13935, isVerificationMet: false }, { id: 13928, isVerificationMet: false }, ] } ]

這是arrayA2(結果)的最終o / p。

 result = [{ id: 13995, nestedArray: [{ id: 13928, isVerificationMet: false }, { id: 13932, isVerificationMet: true }, { id: 13935, isVerificationMet: true }, ] }, { id: 14024, nestedArray: [{ id: 13927, isVerificationMet: true }, ] }, { id: 14029, nestedArray: [{ id: 13906, isVerificationMet: false }, { id: 13935, isVerificationMet: true }, { id: 13928, isVerificationMet: true }, ] } ] }

這是我正在嘗試的邏輯,但它不起作用,

 const docDetails = arrayA2.map((item, i) => { const A2 = Object.assign({}, item); const keys = Object.keys(arrayA1[i]); keys.forEach(key => { if (A2.id == parseInt(key)) { A2.id = parseInt(key) } const fieldList1 = item.nestedArray.filter(elem => { const A1 = Object.assign({}, elem); if (parseInt(key) == A1.id) { A1.isVerificationMet = arrayA1[i][key]; } return A1; }); return (A2.fieldList = fieldList1); }); })

上述邏輯變得笨拙,我嘗試了所有其他方式循環多次並且沒有分配正確的值。

在這里,我使用了 object.assign,因為 arrayA2 是只讀的。

您可以找到帶有值的 object 和 map 新對象。

 const arrayA1 = [{ 13928: false, 13932: true, 13935: true, 13995: false }, { 13927: true, 14024: false }, { 13906: false, 13935: true, 13928: true, 14029: false }], arrayA2 = [{ id: 13995, nestedArray: [{ id: 13928, isVerificationMet: false }, { id: 13932, isVerificationMet: false }, { id: 13935, isVerificationMet: false }] }, { id: 14024, nestedArray: [{ id: 13927, isVerificationMet: false }] }, { id: 14029, nestedArray: [{ id: 13906, isVerificationMet: false }, { id: 13935, isVerificationMet: false }, { id: 13928, isVerificationMet: false }] }], result = arrayA2.map(({ id, nestedArray }) => ({ id, nestedArray: nestedArray.map(o => ({...o, isVerificationMet: arrayA1.find(q => id in q)?.[o.id] })) })); console.log(result);
 .as-console-wrapper { max-height: 100%;important: top; 0; }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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