for循环对数组push一个对象时遇到的坑

for循环对数组push一个对象时遇到的坑

json数组用for循环进行赋值并push,导致打印的所有结果是一样的

如图所示 动态向一个数组中push对象后tree的值打进结果一样
Console(this.tree[i].lable) 的结果是 map1 map2 map3 map4 map9
Console(this.tree) 的结果是 map2 map2 map2 map2 map2

因为Object对象是地址引用传递的,c对象在循环外声明时,每次a.push©添加的c都是同一个对象。就是说a[0],a[1],a[2]中存放的都是同一个对象的引用地址,在修改这个对象的属性后,所有存放这个对象引用的地方都会受到影响。

在这里插入图片描述

在这里插入图片描述
解决办法:在循环里边进行对象进行push 就不存在地址引用的问题了
在这里插入图片描述
记录一下此问题 大家闭坑
转载:https://bbs.csdn.net/topics/391988383?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160929965016780273685996%252522%25252C%252522scm%252522%25253A%25252220140713.130102334.pc%25255Fall.%252522%25257D&request_id=160929965016780273685996&biz_id=&utm_medium=distribute.pc_search_result.none-task-discussion_topic-2allfirst_rank_v2~rank_v29-1-391988383.first_rank_v2_pc_rank_v29&utm_term=json%E6%95%B0%E7%BB%84%E7%94%A8for%E5%BE%AA%E7%8E%AF%E8%BF%9B%E8%A1%8C%E8%B5%8B%E5%80%BC%E5%B9%B6push%EF%BC%8C%E5%AF%BC%E8%87%B4json%E6%89%80%E6%9C%89%E7%9A%84%E6%95%B0%E6%8D%AE%E9%83%BD%E5%8F%98%E6%88%90%E4%B8%80%E6%A0%B7%E7%9A%84%E4%BA%86%EF%BC%8C%E8%BF%99%E6%98%AF%E6%80%8E%E4%B9%88%E5%9B%9E%E4%BA%8B

猜你喜欢

转载自blog.csdn.net/weixin_40648700/article/details/111961160