合并对象数组

时间:2016-04-18 22:55:12

标签: javascript arrays javascript-objects

我需要在browseride javascript中合并对象数组,如下所示:

[
  {name: "john", age: 10},
  {name: "doe", age: 14}
] 

- >新数据到货

[
  {name: "pete", age: 88},
  {name: "larry", age: 42}
]

应该成为

[
  {name: "john", age: 10},
  {name: "doe", age: 14}, 
  {name: "pete", age: 88},
  {name: "larry", age: 42}
] 

那简化了数组将包含数百个更大的对象。因此,我需要一个高性能的解决方案。

先谢谢你的责任

4 个答案:

答案 0 :(得分:4)

您似乎可以使用.push().concat()来组合这两个数组。数组运算符只是抽象地处理数组的元素而不知道它们中的内容是什么并不重要。

这是一个将新数组添加到现有数组的解决方案:

var data = [
  {name: "john", age: 10},
  {name: "doe", age: 14}
]; 


var newInfo = [
  {name: "pete", age: 88},
  {name: "larry", age: 42}
]

data = data.concat(newInfo);

或者,如果你真的想要保留原始数组(不是创建一个新数组),你可以将新数组添加到原始数组的末尾,如下所示:

data.push.apply(data, newInfo);

答案 1 :(得分:3)

假设除了连接2个数组之外你不需要任何其他东西,它非常简单,因为数组已经有了连接方法。

var arr1 = [
  {name: "pete", age: 88},
  {name: "larry", age: 42}
];

var arr2 = [
  {name: "pete", age: 88},
  {name: "larry", age: 42}
];

var concatArr = arr1.concat(arr2);

MDN Page on Array.prototype.concat

答案 2 :(得分:0)

var arr3 = [];
for(var i in arr1){
   var shared = false;
   for (var j in arr2)
       if (arr2[j].name == arr1[i].name) {
           shared = true;
           break;
       }
   if(!shared) arr3.push(arr1[i])
}
arr3 = arr3.concat(arr2);

答案 3 :(得分:0)

您可以使用loadash

这样的事情:

var array = [1];
var other = _.concat(array, 2, [3], [[4]]);

console.log(other);
// → [1, 2, 3, [4]]

console.log(array);
// → [1]

或者对于Json,你可以像这样使用extend:

lodash.extend({}, mergeInto, toMerge)