身为一个前端,对数据操作是很重要的;今天踩了一个坑,排查了很久;使用简单例子说明一下我的坑;
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 [] })
这样定义的话就不会出现上面的问题;
大家可以试试。