如题
console.log(arr)结果
在遍历中 console.log( obj )
因为arr=[...arr,obj]
仅仅是对obj的浅拷贝,归根结底还是使用的obj的应用,如果想要进行深拷贝可以考虑改成这样:
let obj = {id:0},arr=[]
for(let i = 0;i<4;i++){obj.id+=1;arr=[...arr,{...obj}]}
// arr [{id:1},{id:2},{id:3},{id:4}]
当然这里也只是简单的首层深拷贝,要是obj为更复杂的情况得另外考虑。
10 回答11.4k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.9k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
对象是引用类型,赋值的时候只是赋值了地址,所以你数组里4个对象都是同一个地址,即同一个对象
你可以这样修改
另外 像提这种问题不要用图片 建议用markdown语法 这样别人就能直接复制使用你的代码来修改 而不用重新手输一遍