数组的空位是指某个位置没有任何值。
Array(3)//[,,,]
注意空位并不是值为undefined,undefined表示有值
0 in [undefined, undefined, undefined]//true
0 in [,,,]//false
数组各种方法对空位对待有所不同
1、跳过空位
forEach、filter、every、some
var a = [,,1];
a.forEach((item, i)=>{console.log(i)})//2
a.filter((item, i)=>true)//[1]
a.every((item, i)=> item === 1)//true
a.some((item, i)=> item !== 1)//false
2、跳过空位,保留值
map
var a = [,,'a'];
a.map((x)=> 1)[,,1]
3、视为undefined处理
join、toString会将undefined和null当做空字符串处理
var a = [,,'a'];
a.join()//',,a'
a.toSting()//',,a'
from、扩展运算符、entries、values、keys、find、findIndex
var a = [,,'a'];
a.from()//[undefined, undefined, 'a']
[...a] //[undefined, undefined, 'a']
var a = [,,'a'];
[...a.entries()]//[[0, undefined],[1, undefined],[2, 'a']]
a.find((x)=>true)//undefined
a.findIndex((x)=>true)//0
4、空位当做正常位置处理
copyWithin、fill、for..in..
var a = [,,'a'];
for(let i of a){
console.log(1)
}
//1
//1
//1