Skip to content

稀疏数组

稀疏数组(Sparse Array)数组的 length 很大,但实际存在的元素很少,中间有“空位(empty)”

ts
const arr=[1, 2, , 4, 5]//控制台显示:[1,2,空白,4,5]
arr[2]        // 空位输出:undefined

创建稀疏数组

ts
new Array(10)

arr.length = 10

delete arr[2]

arr[100] = 1

特点

  • 有 length,但中间有“空位”
  • 空位 ≠ undefined。读取结果是 undefined,但元素 不存在
ts
arr[1] === undefined // true
1 in arr             // false
  • 多数数组方法会跳过空位
ts
const arr=[1, , 3]

arr.map(v => 6)//[6, 空白, 6]

arr.forEach(() => {
  console.log('hi') //数组方法跳过空位,只打印了2次hi
})
  • for 循环会“访问”空位
ts
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]) // 空位会读到 undefined
}

提示

工程中,我们应该避免使用稀疏数组