【发布时间】:2021-11-23 08:04:20
【问题描述】:
这里不多解释,直接进入正题。
对于以下代码块:
const items = [
{ id: 1, name: 'one' },
{ id: 2, name: 'two' },
];
const changes = {
name: 'hello'
}
items.forEach((item, i) => {
item = {
...item,
...changes
}
})
console.log(items) // items NOT reassigned with changes
items.forEach((item, i) => {
items[i] = {
...item,
...changes
}
});
console.log(items) // items reassigned with changes
为什么在元素迭代时重新分配值不会改变数组中的对象?
item = {
...item,
...changes
}
但是通过使用索引访问它来改变它会改变数组中的对象吗?
items2[i] = {
...item,
...changes
}
什么是更新数组中对象的最佳方式? items2[i] 理想吗?
【问题讨论】:
-
这是设计使然。更改您正在迭代的数组可能会导致难以找到和修复的错误。出于您的目的,使用 array.map() 可能会更好。
标签: javascript foreach