数组类型
密集数组
占据连续的内存空间,数组元素之间紧密相连,不存在间隙。输出整个数组可看到某些元素是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)):二维数组。