JavaScript数组方法高效使用需区分“改变原数组”(如push、splice)和“返回新数组”(如map、filter),按需选择;慎用splice,优先解构与展开语法;大数据量时reduce或flatMap可优化遍历次数,注意边界与类型安全。
JavaScript数组方法用对了,代码更简洁、性能更好。关键不是记全所有方法,而是理解每类方法的用途和副作用,按需选择。
这是高效使用数组方法的第一步。改原数组的方法(如 push、pop、splice、sort、reverse)适合需要就地更新的场景;返回新数组的方法(如 map、filter、slice、concat、flatMap)更适合函数式写法,避免意外修改数据。
filter 后接 map 很常见,但底层会遍历两次。如果数据量大,可考虑用 reduce 一次完成,或用 flatMap(当映射结果是数组时)。
arr.filter(x => x > 0).map(x => x * 2) → 遍历两轮现代JS中,很多老式写法可以被更直观的语法替代:
const [a, b] = arr 或 arr.slice(0, 2),别用 for 循环取索引[...arr1, ...arr2] 比 concat 更直观;追加元素?[...arr, newItem] 比 push + slice 更函数式数组方法对空值、稀疏数组、非数组输入的处理各有不同,容易埋坑:
undefined 或 null 元素
NaN;但 indexOf 不能null 或 undefined 的值调用数组方法前,先做校验:Array.isArray(arr) && arr.map(...)