如何在JavaScript中合并两个不同的对象数组?附示例
在JavaScript中按索引合并两个对象数组
要实现将两个数组中相同索引位置的对象合并(把第二个数组对象的属性追加到第一个数组对应对象中),可以用以下几种方法:
方法1:使用扩展运算符创建新对象(推荐,不修改原数据)
利用Array.prototype.map()遍历数组,同时获取元素索引,再通过扩展运算符...合并对应索引的两个对象:
var array1 = [ { PersonalID: '11', qusetionNumber: '1', value: 'Something' }, { PersonalID: '12', qusetionNumber: '2', value: 'whatever' }, ]; var array2 = [ { uniqueId: '111' }, { uniqueId: '222' }, ]; var results = array1.map((item, index) => ({ ...item, ...array2[index] })); // 输出结果符合需求 console.log(results);
这种方式会创建新的对象,不会修改原数组中的对象,保持数据的不可变性,更安全。
方法2:使用Object.assign修改原对象
如果允许修改原数组的对象,可以用Object.assign():
var results = array1.map((item, index) => Object.assign(item, array2[index]));
注意:此方法会直接修改array1中的原对象,后续使用array1时会看到合并后的属性。
处理数组长度不一致的情况
如果两个数组长度可能不同,可以添加判断避免索引越界导致的错误:
var results = array1.map((item, index) => ({ ...item, ...(array2[index] || {}) // 若array2对应索引无元素,合并空对象 }));
内容的提问来源于stack exchange,提问作者Angou Longjam
相关产品推荐
相关产品推荐

