·

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

Replies
1

感谢大佬,这样就很清晰了 +1