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 只是限制变量不能被重新赋值,啊这,不合理 ![]()