javascript - 合并两个数组的相同索引对象

标签 javascript arrays object

假设我有两个对象数组,如下所示:

var arr1 = [{name: 'Jay'}, {name: 'Bob'}];
var arr2 = [{age: 22}, {age: 30}];

我想要一个像这样的组合数组:

var arr3 = [{name: 'jay', age: 22}, {name: 'Bob', age: 30}];

您可以安全地假设两个初始数组的索引彼此匹配,这意味着 arr1 的索引 0 将始终与 arr2 的索引 0 匹配。

完成此任务的最快方法是什么?我想象一个 forEach 循环嵌套在另一个 forEach 循环中,并使用 arr2 中的当前对象扩展 arr1 中的每个对象>,但我觉得这可能太复杂了。

最佳答案

您可以只迭代一个数组并使用第一次迭代的索引创建一个新数组。有很多方法可以做到这一点。这是一个:

    var arr1 = [{name: 'Jay'}, {name: 'Bob'}];
    var arr2 = [{age: 22}, {age: 30}];

    var combined = arr1.map(function(item, index) {
        return {name: item.name, age: arr2[index].age};
    });
    document.write(JSON.stringify(combined));

如果您真的想要最佳性能,则必须在多种不同的浏览器中测试多种方案。例如,有时 for 循环比某些浏览器中的内置数组方法更快。

var arr1 = [{name: 'Jay'}, {name: 'Bob'}];
var arr2 = [{age: 22}, {age: 30}];
var combined = [];

for (var i = 0; i < arr1.length; i++) {
  combined[i] = {name: arr1[i].name, age: arr2[i].age};
}

document.write(JSON.stringify(combined));

仅供引用,for 循环选项(第二个选项)在 a jsperf 中的所有三种浏览器中看起来都快了很多。 .

enter image description here

关于javascript - 合并两个数组的相同索引对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34076624/

相关文章:

php - 删除 Amazon S3 中的对象或存储桶?

javascript - 如何将二进制字符串转换为十进制?

javascript - 在函数内定义函数,如果存在则运行

javascript - Node.js - 使用异步库 - async.parallel 传递数组

php - 检查一个数组中某个键的值是否等于另一个数组中不同键的值

javascript - 递归搜索全局变量及其属性中的值

oop - 什么时候应该在 OCaml 中使用对象?

javascript - 根据子对象的特定键值按排序顺序迭代 JavaScript 对象

java - 在java中传递数组

arrays - Excel:按分隔符分割单元格并迭代值