js之数组的空位

916 阅读1分钟

数组的空位是指某个位置没有任何值。

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