javascript - Js为每个循环更改数组中的对象

标签 javascript

我想为每个循环更改当前对象,但它不起作用,为什么它不起作用,我该怎么做?

var arr = [{num: 1}, {num: 2}];

arr.forEach(function(item) {
  item = {somethingElse: 1}
});

console.log(arr);

最佳答案

它不起作用,因为您所做的只是更新给定的参数 (item) 的值,它与数组没有实时连接。一旦您的回调返回,该更改就会消失。

最合适的方法是使用 map:

var arr = [{num: 1}, {num: 2}];

arr = arr.map(function(item) {
  return {somethingElse: 1};
});

console.log(arr);

map 为您的函数提供每个项目,并根据您返回的任何内容构建一个数组。

如果您就地更新数组而不是构建一个新数组很重要,您可以使用forEach,您只需重新分配给数组元素你在更新。 forEach 的回调的第二个参数是您正在访问的索引,因此:

var arr = [{num: 1}, {num: 2}];

arr.forEach(function(item, index) {
  arr[index] = {somethingElse: 1};
});

console.log(arr);

当然,在上面的两种情况下,您实际上是在使用 item 来做一些您不在示例代码中的事情...如果您想添加/删除 上的属性code>item,不完全替换对象,Cyril's answer向您展示如何做到这一点。

关于javascript - Js为每个循环更改数组中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33479866/

相关文章:

javascript - for 循环中包含 promise 的词法作用域?

javascript - math.random 有时会自动将最小数字设置为零

javascript - AngularJS 中带有 Promise 的递归查询

javascript - 不变违规 : View config not found for name div

javascript - 有什么方法可以在不完全重新处理/重新编码的情况下为我的迷宫添加边界?

javascript - 从文本切换到视觉时,如果 anchor 标记包裹 block 元素,Wordpress TinyMCE 会删除 anchor 标记

JavaScript RegEx 到白名单字符,我的方法有多糟糕?

javascript - 如何在 html 中创建动态/ self 调整表格,在 Excel/电子表格中显示数据库

Javascript:数字的原型(prototype)

javascript - Jquery 淡入/淡出 img 更改