数组类型之密集数组和稀疏数组

146 阅读1分钟

数组类型

密集数组

占据连续的内存空间,数组元素之间紧密相连,不存在间隙。输出整个数组可看到某些元素是undefined,并不是empty。

  • [null, null, null]、[undefined, undefined, undefined]都是密集数组。
稀疏数组

数组元素之间存在间隙,输出整个数组可看到某些元素是empty,输出该元素发现为undefined。

  • 稀疏数组中empty元素不可赋值。
  • 稀疏数组不能使用数组的map、filter等方法,这些方法中不包含empty元素的索引值。需要fill后才能使用map方法。

创建数组

  • 字面量/new Array构造函数。使用字面量方式较多。const arr = []是const arr = new Array()的语法糖。

    稀疏数组:

    const arr = []:一维空数组/稀疏数组。

    const arr = new Array():一维空数组/稀疏数组。

    const arr = new Array(len):长度为len的一维空数组/稀疏数组。

    new Array(3)

    Array(m).fill().map(item => Array(n)):二维空数组/稀疏数组。

    密集数组:

    Array.from({length: 3}, () => {})

    Array.from(Array(m), () => Array(n).fill(0))

    Array.apply(null, Array(3))

    Array(n).fill(0)new Array(n).fill(0):一维数组。

    Array(m).fill().map(() => Array(n).fill(0))new Array(m).fill().map(() => new Array(n).fill(0))

    new Array(m).fill(new Array(n).fill(0)):二维数组。