繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM