为什么
map
会改变对象数组?
var obj = {
items: [{
value: 1,
selected: true
}, {
value: 2,
selected: false
}]
};
var items = obj.items.map(i => {
if (i.value === 2) i.selected = true;
return i;
});
console.log(obj);
map
不会创建这些对象的副本。 - decezei
仍然是你的obj.items
数组的一个元素,如果你通过i.selected = true
改变它,你就改变了这个元素本身。如果你不想要这个行为,只需复制它。 - Ahmed Bajra