const courses = [
{'id':101,'name':'Complete Web Dev'},
{'id':102,'name':'DS and Algo'},
{'id':103,'name':'React'}
];
let num = courses.find(c=>{
if(c.id===102)
return c;
});
num.name="Programming Fundamentals"
console.log(courses);
谁能给我解释一下,当我改变从find函数返回的值时,为什么原始数组中的值会改变呢?是不是有一个我缺失的概念?在执行代码之后,我将得到下面提到的输出。
[
{ id: 101, name: 'Complete Web Dev' },
{ id: 102, name: 'Programming Fundamentals' },
{ id: 103, name: 'React' }
]
这是因为您引用的是同一个对象。在JavaScript中,只通过值传递基元值。如果您希望它是一个不同的对象,那么您可以复制它。
这样做的一种方法是分散对象并重新分配它。
num = {...num}
请记住,传播对象是一个浅拷贝,这意味着如果您有一个嵌套对象,那么它将不会被复制,而是被引用。