让我说我有和数组由对象组成:
var points = [
{ id: 1, a: 0, b: 3 },
{ id: 2, a: 4, b: -1 },
{ id: 3, a: -1, b: 5 },
{ id: 4, a: 41, b: 2 },
{ id: 5, a: 69, b: 3 },
]
我想迭代每个项目并添加a
+ b
以获取新项d
。然后,我想在数组中的每个对象中添加d以获取新值。当我尝试下面的内容时,它只添加了5个额外的对象,而不是将新元素(key = value,ex:d:3)附加到每个单独的对象。我在这里做错了什么?
points.forEach((item) => {
var d = Math.abs(item.x) + Math.abs(item.y);
console.log(d);
points.item.push('d: ' + d);
});
答案 0 :(得分:3)
尝试以下
var points = [{ id: 1, a: 0, b: 3 },{ id: 2, a: 4, b: -1 },{ id: 3, a: -1, b: 5 },{ id: 4, a: 41, b: 2 },{ id: 5, a: 69, b: 3 }];
points.forEach(o => o.d = Math.abs(o.a) + Math.abs(o.b));
console.log(points);
答案 1 :(得分:1)
@jcbridwe ,您可以在对象上使用assign()
方法将源对象中的缺失属性添加到目标对象。
请查看以下代码。
在http://rextester.com/EPHYV10615在线试用以下代码。
var points = [
{ id: 1, a: 0, b: 3 },
{ id: 2, a: 4, b: -1 },
{ id: 3, a: -1, b: 5 },
{ id: 4, a: 41, b: 2 },
{ id: 5, a: 69, b: 3 },
]
for(var index in points){
var a = points[index].a;
var b = points[index].b;
Object.assign(points[index], {d: a+b});
}
console.log(points);
»输出
[ { id: 1, a: 0, b: 3, d: 3 },
{ id: 2, a: 4, b: -1, d: 3 },
{ id: 3, a: -1, b: 5, d: 4 },
{ id: 4, a: 41, b: 2, d: 43 },
{ id: 5, a: 69, b: 3, d: 72 } ]
答案 2 :(得分:0)
可变方法:
points.forEach(o => o.d = o.a + o.b);
不变的方法:
const newPoints = points.map(o => Object.assign({}, o, {d: o.a + o.b}))