稀疏数组和密集数组 - pod4g/tool GitHub Wiki

一、 创建数组的两种典型方式

const arr = Array(10)
const arr2 = new Array(10)

这两者创建数组有什么区别呢?答案是没有区别

对于这点,规范已经进行了说明:

When Array is called as a function rather than as a constructor, it creates and initialises a new Array object. Thus the function call Array(…) is equivalent to the object creation expression new Array(…) with the same arguments

二、稀疏数组和密集数组

稀疏数组就是包含从0开始的不连续索引的数组。通常,数组的length属性值代表数组中元素的个数。如果数组是稀疏的,length属性值大于元素的个数,如果数组是稀疏的,那么这个数组中至少有一个以上的位置不存在元素。

稀疏数组在迭代的时候会跳过不存在的元素。

const sparse = Array(10) // 稀疏数组
const dense = Array(10).fill(undefined) // 密集数组

sparse.forEach(item => console.log(item)) // 不打印任何东西
dense.forEach(item => console.log(item))  // 打印10次undefined

https://juejin.im/entry/5a122a556fb9a04528461544?utm_source=gold_browser_extension