【发布时间】:2019-10-18 13:45:10
【问题描述】:
我有这样的结构:
let MainItem = [
{
"Id": "1",
"Cost": "1000"
},
{
"Id": "2",
"Cost": "5000"
},
{
"Id": "3",
"Cost": "2000"
},
{
"Id": "4",
"Cost": "3000"
}
];
我打算用map()循环改变Cost每个元素的值并将其存储在NewMainItem中。
let NewMainItem = MainItem.map((item, i) => {
item.cost = item.cost + 1000
return item
});
console.log(MainItem)
console.log(NewMainItem)
主要问题是通过更改NewMainItem中的Cost,
MainItem 中的 Cost 也将被更改,但我不想这样做。通过使用map() 循环,为什么主对象(MainItem)也会改变?
【问题讨论】:
-
在
map回调中深度克隆item。 -
@adiga 我想说Why does map mutate array of objects? 是一个更好的目标,因为那个问题,这似乎不明白迭代回调中的项目是 实际项目。
-
这里
item.cost = ...更改现有对象的属性。无论您是在循环内还是在任何地方执行此操作,您都会更改对象。
标签: javascript