Combine same-index objects of two arrays

前端 未结 4 1199
深忆病人
深忆病人 2021-01-25 05:19

Say I have two arrays of objects, like so:

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

I want a combined

4条回答
  •  被撕碎了的回忆
    2021-01-25 05:56

    You can just iterate one array and create a new array using the index from the first iteration. There are many ways to do this. Here's one:

        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));

    If you really want the maximum performance, you'd have to test a number of schemes in a number of different browsers. For example, sometimes a for loop is faster than the built-in array methods in some browsers.

    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));

    FYI, the for loop option (the second option) looks quite a bit faster in all three browsers here in a jsperf.

提交回复
热议问题