将2个对象数组连接成一个

时间:2017-02-28 11:42:31

标签: javascript arrays object

我有一个包含一个属性调用name的对象数组,如下所示

var nameArr = [  
   {  
      "name":"john"
   },
   {  
      "name":"carl"
   },
   {  
      "name":"peter"
   }
]

我有另一个名为ageArr的数组,它只包含名为age

的属性
var ageArr = [  
   {  
      "age":"22"
   },
   {  
      "age":"21"
   },
   {  
      "age":"32"
   }
]

我想连接这些数组,结果应该像这样结果

var result = [  
   {  
      "age":"22",
      "name":"john"
   },
   {  
      "age":"21",
      "name":"carl"
   },
   {  
      "age":"32",
      "name":"peter"
   }
]

请注意,两个数组的长度始终相等且动态。有没有办法,我可以做到这一点,而不是将这些数组相互循环。谢谢。

3 个答案:

答案 0 :(得分:2)

您可以使用Object.assign()map()并返回新阵列。



var nameArr = [{"name":"john"},{"name":"carl"},{"name":"peter"}]
var ageArr = [{"age":"22"},{"age":"21"},{"age":"32"}]

var result = nameArr.map(function(e, i) {
  return Object.assign({}, e, ageArr[i])
})
console.log(result)




答案 1 :(得分:0)

forEach()个功能就足够了。



var nameArr=[{name:"john"},{name:"carl"},{name:"peter"}],
    ageArr=[{age:"22"},{age:"21"},{age:"32"}];


nameArr.forEach((v,i) => v.age = ageArr[i].age)
console.log(nameArr);




答案 2 :(得分:0)

您可以使用以下代码段。

var result = nameArr.map(function( obj, index ) {
    var res = ageArr[index];
    res.name = obj.name;
    return res;
});

在地图中,您可以轻松使用

  

jQuery.extend()

创建两个相同索引对象的合并。