JavaScript数组方法分为不改变和改变原数组两类,关键在于返回值、是否影响原数组及参数含义;常用操作涵盖查取、变换、遍历、聚合、转换排序等,需注意副作用。
JavaScript 数组提供了大量内置方法,按功能可分为 不改变原数组 和 改变原数组 两类。掌握常用方法的关键是理解它们的返回值、是否影响原数组,以及参数含义。
查与取:获取元素或判断存在性
这类方法常用于查找、筛选或检查条件,不修改原数组。
-
includes(value):返回布尔值,判断数组是否包含某值(支持 NaN)
-
indexOf(value) / lastIndexOf(value):返回首次/末次匹配索引,没找到返回 -1
-
find(callback):返回第一个满足条件的元素(适合对象数组)
-
findIndex(callback):返回第一个满足条件的元素索引
-
filter(callback):返回所有满足条件的元素组成的新数组
变与造:增删改与生成新数组
这些方法会创建新数组(如 map、slice)或直接修改原数组(如 push、splice)。
-
map(callback):对每个元素执行操作,返回变换后的新数组(如
[1,2,3].map(x => x * 2) → [2,4,6])
-
slice(start, end):截取子数组(浅拷贝),不改变原数组
-
concat(...arrays):合并多个数组,返回新数组
-
push(...items) / pop():尾部添加/删除,返回新长度/被删元素
-
unshift(...items) / shift():头部添加/删除
-
splice(start, deleteCount, ...items):从指定位置删除并可插入,直接修改原数组,返回被删元素数组
遍与聚:遍历与聚合计算
用于执行副作用或汇总数据。
-
forEach(callback):遍历每个元素,无返回值(不能 break,可用 return 跳过当前)
-
some(callback):只要有一个满足就返回 true
-
every(callback):全部满足才返回 true
-
reduce(callback, initialValue):累加器模式,常用于求和、扁平化、分组等(如
[1,2,3].reduce((a,b) => a + b) → 6)
转与排:转换格式与排序
处理字符串交互或顺序调整。
-
join(separator):用指定字符连接成字符串(如
[1,2,3].join('-') → "1-2-3")
-
reverse():直接反转原数组
-
sort(compareFn):默认按字符串 Unicode 排序;数
字排序需传入比较函数:(a,b) => a - b
-
flat(depth):扁平化嵌套数组(
flat(1) 展开一层,flat(Infinity) 完全展开)
基本上就这些——日常开发中熟练掌握 map/filter/find/reduce/splice/join 就能覆盖 90% 的数组操作场景。注意区分哪些会改原数组(如 sort、reverse、splice、push),避免意外副作用。