js forEach遍历修改对象的问题
c
const arr1 =
{ id: 1, value: 1 },
{ id: 2, value: 2 },
item
是个变量,在你第二段代码的 if
语句内,item.id == 1
首先让 item
变量指向了需要的对象,但你使用赋值 =
,让 item
指向了新对象。你改变的 item
指向的对象,所以原对象并没有发生改变。
正确的方法是引用 arr1
,然后修改 arr1
。但你的 arr1
为什么声明成了 const
对象?这里应该用 let
吧。你也可以用 map
,但就生成了新的数组。
arr1.forEach((item, index) => {
if (item.id == 1) {
arr1[index] = { id: 6, value: 6}
}
}
测试了一下,在 const
声明下也能修改 arr1
。原来 js 中的 const
只是限制变量不能被重新赋值,啊这,不合理