更改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