踩了数组的坑

身为一个前端,对数据操作是很重要的;今天踩了一个坑,排查了很久;使用简单例子说明一下我的坑;

let arr = new Array(3).fill([]) ;这时候arr是=  [[],[],[]]是一个包含三个空数组的数组;

arr[0].push('1')原来以为得到[[1],[],[]],

实际得到[[1],[1],[1]]。

arr[1].push('2');arr[2].push('3'); 是得到[[1,2,3],[1,2,3],[1,2,3]]

这个问题是因为对象和数组是指向类型,而不是值类型。

简单的解决办法:

在定义的时候let arr = new Array(3).fill(1) ;

arr = arr.map(item=>{

return [] })

这样定义的话就不会出现上面的问题;

大家可以试试。

 

posted @ 2019-10-30 10:38  进军的王小二  阅读(147)  评论(0)    收藏  举报