需要帮助小事。我搜索了当前的问题,但没有找到好的例子。
我有两个具有相同对象数的数组:
array1 = [{ id: 1, name: 'Johnny'}, { id: 2, name: 'Mike'}];
array2 = [{ hair: 'black'}, { hair: 'white'}];
我需要
array3 = [
{ id: 1, name: 'Johnny', hair: 'black'},
{ id: 2, name: 'Mike', hair: 'white'}
]
我已尝试使用push和[... ES6]的几种方法,但我总是返回4个对象而不是2个。
答案 0 :(得分:5)
使用ES6的Object.assign:
var array1 = [{ id: 1, name: 'Johnny'}, { id: 2, name: 'Mike'}];
var array2 = [{ hair: 'black'}, { hair: 'white'}];
var merged = array1.map((el, index) => Object.assign(el, array2[index]));
console.log(merged);
答案 1 :(得分:1)
您可以将Array#reduce
与Array#map
和Object.assign
一起用于任意数量的数组,并在一个对象中的相同索引处映射对象。
var array1 = [{ id: 1, name: 'Johnny'}, { id: 2, name: 'Mike'}];
array2 = [{ hair: 'black'}, { hair: 'white'}],
result = [array1, array2]
.reduce((r, a) => a.map((o, i) => Object.assign(r[i] || {}, o), []));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }