我已经为给定的代码数据写过,但是无法将一个对象数组合成另一个对象数组,如下所示。
var data=[{x:10,y:30},{a:50,b:40}]
var data1=[{x1:10,y1:30},{a1:50,b1:40}]
function fctnCombind(){
for(var i in data){
for(var j in data1){
data[i].children=data1[j]
//console.log(data[i].children)
data[i].push(data[i].children)
}
return data;
}
}
And final output is given below:
[{x:10,y:30,c:[x1:10,y1:30]},{a:50,b:40,d:[a1:50,b1:40]}]
答案 0 :(得分:0)
根据您的代码,
当您迭代数组时。您将array2
第一项存储在作为对象的.children
array1[i]
属性中。
现在,当您使用data[i].push(data[i].children)
时,data[i]
实际上是一个对象,它没有push
属性。所以它失败了。
假设维持订单。
var data = [{
x: 10,
y: 30
}, {
a: 50,
b: 40
}]
var data1 = [{
x1: 10,
y1: 30
}, {
a1: 50,
b1: 40
}];
function combineObjects(data, data1) {
for(var i=0; i < data.length; i++) {
Object.keys(data1[i]).forEach(function(item) {
data[i][item] = data1[i][item]
});
}
return data;
}
combineObjects(data, data1);
答案 1 :(得分:0)
你真的只需迭代其中一个数组,然后执行How can I merge properties of two JavaScript objects dynamically?中描述的内容:
var data = [{x:10,y:30},{a:50,b:40}];
var data1 = [{x1:10,y1:30},{a1:50,b1:40}];
// copy
var result = data.map(function(value, i) {
return Object.assign({}, value, data1[i]);
});
console.log(result);
// in place
data.forEach(function(value, i) {
for (var prop in data1[i]) {
value[prop] = data1[i][prop];
}
});
// `data` is now the merged result
console.log(data);
&#13;
这假设两个数组的长度相同。