JavaScript數組元素匹配與合并:基于鍵值對的數組重組
在javascript開發中,常常需要根據兩個數組的鍵值關系生成新的數組。本文介紹一種高效方法:根據數組a的value值和數組b的key值是否匹配,構建一個新數組。
假設:數組a包含多個對象,每個對象有id、key和value三個屬性;數組b也包含多個對象,其key值與數組a中的key值對應。目標是創建一個新數組,包含數組b的所有屬性,并補充來自數組a中對應的value和key屬性。
示例輸入:
數組a:[{id:1,key:’key1′,value:’ggg’},{id:2,key:’key2′,value:’cccc’}]
立即學習“Java免費學習筆記(深入)”;
數組b:[{id:3,key1:’sdf’},{id:4,key2:’sdfdff’}]
期望輸出:
[{id:3,key1:’sdf’,key:’key1′,value:’ggg’},{id:4,key2:’sdfdff’,key:’key2′,value:’cccc’}]
高效解決方案:使用map和find方法
以下代碼利用map和find方法實現:
const a = [{id:1,key:'key1',value:'ggg'},{id:2,key:'key2',value:'cccc'}]; const b = [{id:3,key1:'sdf'},{id:4,key2:'sdfdff'}]; function mergeArrays(a, b) { return b.map(item => { const match = a.find(i => Object.keys(item).some(k => k === i.key)); return {...(match || {}), ...item}; }); } const c = mergeArrays(a, b); console.log(c);
mergeArrays函數接收數組a和b作為參數。map方法遍歷數組b,find方法在數組a中查找與b中對象key值匹配的對象。找到匹配項后,使用展開運算符…合并兩個對象。如果沒有匹配項,則只保留b中的對象。最后返回合并后的新數組。 Object.keys(item).some(k => k === i.key) 確保即使key不在開頭也能匹配。
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦