创建新数组时用fill方法填充引用数据类型的问题

问题简述

当我们使用下面代码时会产生一个长度为10的数组

new Array(10).fill([false, false])

创建新数组时用fill方法填充引用数据类型的问题
但是由于fill的是一个引用数据类型,会导致填充的所有[false,false]其实指向的都是同一个数组,所以只要改变其中一个剩余九个都会一起跟着改变。下边举个例子
创建新数组时用fill方法填充引用数据类型的问题

解决方法

var arr = Array.apply(null, {length: 10}).map(() => ([false, false]))

或者

var arr = new Array(10)
for(let i =0;i<arr.length;i++){arr[i]=[false,false]}
arr[0][1] = true

创建新数组时用fill方法填充引用数据类型的问题

上一篇:去除a标签链接触摸时产生边框


下一篇:编译升级php