JavaScript 数组中较为常用、好用的方法按使用场景分类总结如下,每个方法标注核心特点和适用场景,方便快速查阅和使用。
一、动态增删改(数组核心动态特性)
| 方法 | 核心作用 | 关键特点 | 示例 |
|---|---|---|---|
push() | 尾部添加1+元素 | 直接修改原数组,返回新长度 | arr.push(10, 20)→ [原元素,10,20] |
pop() | 尾部删除1个元素 | 直接修改原数组,返回被删元素 | arr.pop()→ 删除最后一个 |
unshift() | 头部添加1+元素 | 直接修改原数组,返回新长度(性能略差) | arr.unshift(5)→ [5, 原元素] |
shift() | 头部删除1个元素 | 直接修改原数组,返回被删元素 | arr.shift()→ 删除第一个 |
splice() | 任意位置增/删/改 | 万能动态操作,直接修改原数组 | arr.splice(1,0,20)→ 索引1插入20;arr.splice(1,1)→ 索引1删除1个 |
二、查找/判断(快速找元素、验存在)
| 方法 | 核心作用 | 关键特点 | 适用场景 |
|---|---|---|---|
includes() | 判断是否包含某元素 | 返回布尔值,能识别NaN,语义最强 | 基础类型(数字/字符串)判存在 |
indexOf() | 找元素首次出现的索引 | 返回索引/-1,兼容旧环境,无法识别NaN | 兼容IE、需要获取元素位置 |
find() | 找第一个满足条件的元素 | 返回元素/undefined,支持自定义条件 | 复杂元素(对象)查找 |
findIndex() | 找第一个满足条件的索引 | 返回索引/-1,支持自定义条件 | 找复杂元素的位置 |
三、遍历处理(逐个操作元素)
| 方法 | 核心作用 | 关键特点 | 适用场景 |
|---|---|---|---|
forEach() | 遍历数组执行回调 | 无返回值,仅遍历(不能中断) | 简单遍历、无返回值的操作 |
map() | 遍历并返回新数组 | 不修改原数组,返回“处理后的新数组” | 数组元素转换(如数值翻倍) |
filter() | 筛选满足条件的元素 | 不修改原数组,返回“符合条件的新数组” | 数组过滤(如筛选大于10的数) |
some() | 判断是否有元素满足条件 | 找到即停止遍历,返回布尔值 | 判“是否存在”复杂条件元素 |
every() | 判断是否所有元素满足条件 | 有一个不满足即停止,返回布尔值 | 判“全部符合”(如全是正数) |
四、转换/重组(生成新值/新数组)
| 方法 | 核心作用 | 关键特点 | 示例 |
|---|---|---|---|
reduce() | 数组归并为单个值 | 万能转换,支持累加/拼接/统计等 | arr.reduce((sum, n) => sum+n, 0)→ 求和 |
join() | 数组转字符串 | 自定义分隔符,默认逗号 | [1,2].join("-")→ “1-2” |
concat() | 数组合并 | 不修改原数组,返回新数组 | [1].concat([2,3])→ [1,2,3] |
slice() | 截取数组片段 | 不修改原数组,返回新数组(左闭右开) | [1,2,3].slice(0,2)→ [1,2] |
五、排序/反转(调整元素顺序)
| 方法 | 核心作用 | 关键特点 | 注意点 |
|---|---|---|---|
sort() | 数组排序 | 直接修改原数组,默认按字符串排序 | 数字排序需传回调:arr.sort((a,b)=>a-b)(升序) |
reverse() | 数组反转 | 直接修改原数组,返回反转后的原数组 | [1,2,3].reverse()→ [3,2,1] |
六、其他高频实用方法
| 方法 | 核心作用 | 关键特点 |
|---|---|---|
flat() | 数组扁平化 | 处理嵌套数组,flat(Infinity)拍平所有层级 |
fill() | 填充数组 | 用指定值填充全部/部分元素,修改原数组 |
toString() | 数组转字符串 | 等同于join(","),简单快捷 |
核心总结
动态操作:日常增删用
push/pop(尾部)、unshift/shift(头部),任意位置操作选splice();判断存在:基础类型用
includes()(最便捷),复杂对象用some();遍历处理:无返回值遍历用
forEach(),生成新数组用map(),筛选元素用filter();排序:数字排序一定要传回调
(a,b)=>a-b(升序)/(a,b)=>b-a(降序),避免默认字符串排序坑;核心原则:
map/filter/concat/slice不修改原数组,push/pop/splice/sort直接修改原数组,使用时注意区分。
这些方法覆盖了数组 95% 的日常使用场景,记住分类和核心特点,就能快速选对方法,不用重复写循环逻辑。