JavaScript中的数组是一个非常重要且灵活的数据结构,用于存储有序的元素集合。以下是关于JavaScript数组的详细总结:
let arr = [1, 'a', {x: 2}];
let arr = new Array(1, 2, 3);
(注意单个数字参数会创建空槽数组)。Array.from()
:将类数组对象(如arguments
、NodeList)或可迭代对象(如Set
)转换为数组。Array.of()
:解决构造函数歧义,如Array.of(7)
创建 [7]
。arr.length
获取或修改长度(扩展或截断数组)。[1, , 3]
,某些方法会跳过空槽。push()
, pop()
, unshift()
, shift()
, splice()
。sort()
, reverse()
。fill()
, copyWithin()
。concat()
, slice()
。join()
, flat()
, flatMap()
。filter()
, map()
。forEach()
(无法中断)。every()
, some()
, includes()
。find()
, findIndex()
, indexOf()
。reduce()
, reduceRight()
。[...arr]
用于合并数组或传递参数(如Math.max(...arr)
)。for...of
遍历,或直接使用keys()
, values()
, entries()
方法。flat(depth)
和flatMap()
处理嵌套数组。push/pop
在数组末尾操作,时间复杂度O(1)。shift/unshift
在开头操作需移动元素,时间复杂度O(n)。Array.isArray(arr)
(因typeof arr
返回"object"
)。Array.from(arrayLike)
或[...arrayLike]
。slice()
, concat()
, 展开运算符。JSON.parse(JSON.stringify(arr))
(局限:不支持函数、循环引用)。map()
跳过空槽,而join()
视作空字符串(如[1,,3].join() → "1,,3"
)。arr.filter().map().reduce()
)。arr.length = 0
。[...new Set(arr)]
。[a, b] = [b, a]
(解构赋值)。undefined
的元素会被处理。new Array(3)
生成[empty × 3]
,而非[undefined, undefined, undefined]
。掌握这些知识后,可以更高效地利用JavaScript数组处理数据,并根据需求选择合适的方法和优化策略。