将两个数组合并为一个具有相同数量的对象的数组

时间:2017-10-18 09:48:09

标签: javascript reactjs

需要帮助小事。我搜索了当前的问题,但没有找到好的例子。

我有两个具有相同对象数的数组:

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个。

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#reduceArray#mapObject.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; }