[英]Adding a new element to an object in an array
可以说我有一个由对象组成的数组:
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);
});
尝试跟随
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 => od = Math.abs(oa) + Math.abs(ob)); console.log(points);
@jcbridwe ,您可以在Object上使用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 } ]
可变方法:
points.forEach(o => o.d = o.a + o.b);
不变的方法:
const newPoints = points.map(o => Object.assign({}, o, {d: o.a + o.b}))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.