Javascript 向数组中的对象添加新元素

Javascript 向数组中的对象添加新元素,javascript,arrays,object,Javascript,Arrays,Object,假设我有一个由对象组成的数组: 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=

假设我有一个由对象组成的数组:

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}];
分数.forEach(o=>o.d=Math.abs(o.a)+Math.abs(o.b));

控制台日志(点)
@jcbridwe,您可以使用对象上的
assign()
方法将缺少的属性从源对象添加到目标对象

请看下面的代码

请在上联机尝试以下代码

»输出

[ { 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}))
不变的方法:

points.forEach(o => o.d = o.a + o.b);
const newPoints = points.map(o => Object.assign({}, o, {d: o.a + o.b}))

您的对象看起来有
a
b
属性,而不是
x
y
属性?我选择了这个解决方案,因为它为我对代码所做的更改添加了最相关的内容。谢谢@gwydion93。