JavaScript如何递增对象数组中所有元素的指定属性值
原代码错误说明
你的现有写法存在两处问题:
- 箭头函数内的
this不指向当前遍历到的商品对象:箭头函数没有自身的this,会继承外层作用域的this,和当前遍历的item完全无关,根本访问不到商品的quantity属性。 forEach本身没有返回值,回调里写return item没有任何实际作用,属于无效代码。
正确实现方案
根据你是否需要保留原始数组数据,选对应写法即可:
直接修改原数组
如果不需要保留修改前的quantity值,直接遍历修改当前项属性即可:
// 要叠加的固定数值,抽成常量方便后续调整 const INCREASE_VALUE = 120; products.forEach(item => { item.quantity += INCREASE_VALUE; });
执行完成后,原products数组内所有商品的quantity都会统一加上设定的固定值。
生成新数组不改动原数据
如果需要保留原始数组的数值不变,返回修改后的新数组,用map实现:
const INCREASE_VALUE = 120; const updatedProducts = products.map(item => ({ ...item, quantity: item.quantity + INCREASE_VALUE }));
这种写法不会改动原始products数组的内容,修改后的结果存放在updatedProducts中,适合需要留存原始数据的业务场景。
内容的提问来源于stack exchange,提问作者Maolean
相关产品推荐
相关产品推荐

