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。