稀疏数组
稀疏数组(sparse array)
1.创建稀疏数组
创建稀疏数组的三种方式:
- 通过delete数组会使数组产生孔(hole)
- Array(3)这种方式也会产生一个稀疏数组
- [2,,3]这个长度为4的数组中间也会产生孔,也就是一个稀疏数组
2.稀疏数组和普通数组的遍历
稀疏数组在使用for..循环和for...of循环的时候根据长度循环,及时中间的孔也会循环到
let a=Array(3); for(let i=0;i<a.length;i++){ console.log(2); }

let a=Array(3); for(let i of a){ console.log(2); }

而基于另外一个循环语句for....in 稀疏数组中的孔就不会被访问
let a=Array(3); for(let i in a){ console.log(2); }

这是因为for...in 循环的时候会用in 操作符进行判断
var a=[,,,]; 0 in a

var b=[1,2,3]; 0 in b

而常见的foreach,map等数组迭代的方法,在ECMA规范里都会用in 操作符进行判断
参见http://www.ruanyifeng.com/blog/2015/11/ecmascript-specification.html
3.稀疏数组转换
可以用apply进行稀疏数组的转化
var a=Array(3); [].concat.apply([],a)


浙公网安备 33010602011771号