更改find()返回的值,原数组也会被改变
const b = [{a:1},{a:2},3];
const node = b.find(r=>r.a === 1);
console.log(node); //{a:1}
node.a = 2;
console.log(b);//[{a:2},{a:2},3];
这是因为引用的是同一个对象。在JavaScript中,只有primitive值通过值传递。如果你希望它是一个不同的对象,那么你可以复制它。
这样做的一种方法是对对象执行spreading操作,然后再次分配它。
num = {...num}复制
请记住,传播一个对象是一个浅拷贝,这意味着如果你有一个嵌套的对象,那么它不会被复制,而是被引用
。
参考:https://cloud.tencent.com/developer/ask/sof/610955/answer/918370
这篇博客探讨了JavaScript中find()方法返回值与原数组的关系。当修改找到的对象属性时,原数组也会被改变,因为它们引用了同一对象。文章提到了对象复制的概念,建议使用浅拷贝避免直接影响原数组。还提醒了浅拷贝只复制一层属性,对于嵌套对象则是引用。
1122

被折叠的 条评论
为什么被折叠?



