如何使用javascript合并两个对象数组

时间:2015-04-06 11:10:13

标签: javascript

如何使用javascript为给定数据合并两个对象数组。

var data = [{
  "key": 2000,
  "value": 10000
}, {
  "key": 2001,
  "value": 50000
}];

var data1 = [{
  "key": [2000, 0],
  "value": 1000
}, {
  "key": [2000, 1],
  "value": 1500
}, {
  "key": [2000, 3],
  "value": 2000
}, {
  "key": [2001, 0],
  "value": 2500
}, {
  "key": [2001, 1],
  "value": 3000
}, {
  "key": [2001, 3],
  "value": 4000
}];

最后输出如下:

var data3 = [{
  "key": 2000,
  "value": 10000,
  children: [{
    "key": [2000, 0],
    "value": 1000
  }, {
    "key": [2000, 1],
    "value": 1500
  }, {
    "key": [2000, 3],
    "value": 2000
  }]
}, {
  "key": 2001,
  "value": 50000,
  children: [{
    "key": [2001, 0],
    "value": 2500
  }, {
    "key": [2001, 1],
    "value": 3000
  }, {
    "key": [2001, 3],
    "value": 4000
  }]
}]

3 个答案:

答案 0 :(得分:1)

这次迭代的次数与数组data1中的对象一样多。

然后,在每次迭代中,它会将data1中的对象(等于变量count)添加到数据中。

之后,它将使变量data1未定义。



for(var count = 0; count < data1.length; count++){
    data.push(data1[count]);
}
data1 = undefined;
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以通过使用forEach循环迭代给定的2个数组来实现此目的。

工作代码段

var data = [{
  "key": 2000,
  "value": 10000
}, {
  "key": 2001,
  "value": 50000
}];

var data1 = [{
  "key": [2000, 0],
  "value": 1000
}, {
  "key": [2000, 1],
  "value": 1500
}, {
  "key": [2000, 3],
  "value": 2000
}, {
  "key": [2001, 0],
  "value": 2500
}, {
  "key": [2001, 1],
  "value": 3000
}, {
  "key": [2001, 3],
  "value": 4000
}];

data.forEach(function(parentObj){  // loop over data
  
  parentObj.children = [];  // initialize the children
  
  data1.forEach(function(childObj){  // loop over data1
    
    if(parentObj["key"] === childObj["key"][0])
      parentObj.children.push(childObj);
    
  });
  
});

console.dir(data);
<p>Please check your browser's console now.</p>

Source

阅读:Array.prototype.forEach() | MDN

答案 2 :(得分:0)

它是多维数组。请查看演示链接,如下所示。 这是演示链接点击enter code here [此处](http://jsfiddle.net/ambiguous/twpUF/