3 回答
TA贡献1856条经验 获得超5个赞
您需要迭代该数组,并将该对象分配给具有相同索引的对象。
var data = [ { price: 1, name: 'qq' }, { price: 2, name: 'ww' }],
newData = [ { price: 100 }, { price: 200 }];
data.forEach((o, i) => Object.assign(o, newData[i]));
console.log(data);
TA贡献1864条经验 获得超2个赞
这是因为您将完全覆盖其他属性,就像data数组一样,合并是基于数组的索引进行的。
因此0,data数组的索引将被匹配0的newData数组的索引替换,因此整个对象将被替换。
根据MDN文档:
如果目标对象中的属性具有相同的键,则它们将被源中的属性覆盖。
因此,这里将数组索引视为匹配键。
对于数组中的每个条目,尝试合并如下所示的对象:
const data = [ { price: 1, name: 'qq' }, { price: 2, name: 'ww' }];
const newData = [ { price: 100 }, { price: 200 }];
const res = data.reduce((acc, ele, idx) => acc.concat(Object.assign({}, ele, newData[idx])),[]);
console.log(res)
TA贡献1811条经验 获得超6个赞
遍历data和使用Object.assign,或使用传播...:
const data = [ { price: 1, name: 'qq' }, { price: 2, name: 'ww' }];
const newData = [ { price: 100 }, { price: 200 }];
data.map((o, i) => Object.assign(o, newData[i]));
console.log(data);
添加回答
举报