【问题标题】:How to merge objects from two different arrays of same length?如何合并来自两个相同长度的不同数组的对象?
【发布时间】:2020-08-22 22:59:31
【问题描述】:

我正在使用原生 JavaScript。 我有两个长度相同的数组。 它们中的每一个都包含对象。 我需要创建一个包含对象组合的数组。 怎么样?

所以,在代码中,我的输入是:

const arr1 = [{name: "John"}, {name: "Peter"}];
const arr2 = [{age: 56}, {age: 22}]

理想的输出:

const arr3 = [{name: "John", age: 56}, {name: "Peter", age: 22}]

我看到了 ES6 提供的解决方案,它是这样的:

const object1 = {
  name: 'John'
}
const object2 = {
  age: 56
}
const object3 = {...object1, ...object2 }

效果很好!我想在此示例中使用此扩展运算符在数组中的对象中实现相同的解决方案。如何? :)

谢谢。

【问题讨论】:

  • 只要在循环中付出更多的努力,我敢打赌你自己就可以得到这个

标签: javascript arrays object merge


【解决方案1】:

使用Array.prototype.map() 和传播语法:

const arr1 = [{ name: 'John' }, { name: 'Peter' }];
const arr2 = [{ age: 56 }, { age: 22 }];
const arr3 = arr1.map((v, i) => ({ ...v, ...arr2[i] }));
console.log(arr3);

【讨论】:

    【解决方案2】:

    另一种选择

    const arr1 = [{name: "John"}, {name: "Peter"}];
    const arr2 = [{age: 56}, {age: 22}];
    const result = [];
    
    for(let i = 0; i < arr1.length; i++) result.push(Object.assign(arr1[i], arr2[i]));
    
    console.log(result)

    P.S,也正如@charlietfl 提到的:如果您不想改变arr1 中的对象,请从空对象开始...Object.assign({},arr1[i], arr2[i])

    【讨论】:

    • 如果您不想改变 arr1 中的对象,请从空对象开始...Object.assign({},arr1[i], arr2[i])