稀疏数组

稀疏数组(sparse array)

1.创建稀疏数组

 

创建稀疏数组的三种方式:

  1. 通过delete数组会使数组产生孔(hole)
  2. Array(3)这种方式也会产生一个稀疏数组
  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)

 

posted @ 2018-10-22 21:51  Lydiajust2young  阅读(253)  评论(0)    收藏  举报