JS常用数组方法
JavaScript 的数组方法非常强大,掌握它们能让你的开发效率事半功倍。以下是常用的数组方法总结,分为 修改原数组/返回新数组、遍历/查找、ES6+新增方法 等分类:
一、会修改原数组的方法
| 方法 | 作用 | 示例 | 返回值 |
|---|---|---|---|
| push | 在数组末尾添加元素 | arr.push(5) |
新数组长度 |
| pop | 删除数组最后一个元素 | arr.pop() |
被删除的元素 |
| unshift | 在数组开头添加元素 | arr.unshift(1) |
新数组长度 |
| shift | 删除数组第一个元素 | arr.shift() |
被删除的元素 |
| splice | 删除/替换数组元素 | arr.splice(1,2,'a') |
被删除元素的数组 |
| reverse | 反转数组顺序 | arr.reverse() |
反转后的原数组 |
| sort | 排序数组(默认字符顺序) | arr.sort((a,b) => a - b) |
排序后的原数组 |
| fill | 填充数组元素 | arr.fill(0, 1, 3) |
修改后的原数组 |
二、不修改原数组的方法
| 方法 | 作用 | 示例 | 返回值 |
|---|---|---|---|
| concat | 合并多个数组 | arr1.concat(arr2) |
新数组 |
| slice | 截取数组片段 | arr.slice(1,3) |
新数组片段 |
| join | 转成字符串 | arr.join('-') |
字符串 |
| map | 映射新数组 | arr.map(x => x * 2) |
新数组 |
| filter | 过滤符合条件元素 | arr.filter(x => x > 5) |
新数组 |
| reduce | 累积计算结果 | arr.reduce((sum, x) => sum + x, 0) |
累积结果 |
三、遍历与检测方法
| 方法 | 作用 | 示例 |
|---|---|---|
| forEach | 遍历数组(没有返回值) | arr.forEach(x => console.log(x)) |
| some | 是否有一个满足条件 | arr.some(x => x % 2 === 0) |
| every | 是否全部满足条件 | arr.every(x => x > 0) |
| find | 查找第一个符合条件的元素 | arr.find(x => x.age > 18) |
| findIndex | 查找第一个符合条件的索引 | arr.findIndex(x => x === 5) |
| indexOf | 查找元素的索引位置(严格相等) | arr.indexOf(3) |
| includes | 是否包含某元素(ES7) | arr.includes('apple') |
四、ES6+ 新增实用方法
| 方法 | 作用 | 示例 |
|---|---|---|
| flat | 数组扁平化 | arr.flat(2) |
| flatMap | 先映射再扁平化 | arr.flatMap(x => [x, x*2]) |
| Array.from | 将类数组转为数组 | Array.from('123') → [1,2,3] |
| fill | 填充数组(替换元素) | new Array(3).fill(0) |
⭐ 高频使用场景说明
-
数据转换 →
mapconst prices = [10, 20, 30]; const withTax = prices.map(price => price * 1.1); -
条件过滤 →
filterconst adults = users.filter(user => user.age >= 18); -
数值计算 →
reduceconst total = cartItems.reduce((sum, item) => sum + item.price, 0); -
快速判断存在性 →
some/includesif (tags.some(tag => tag === 'urgent')) { // 紧急任务处理 } -
数组扁平化 →
flatconst nested = [1, [2, [3]]]; const flatArr = nested.flat(Infinity); // [1, 2, 3]
📌 注意事项
- 直接修改原数组的方法(如
push/pop)在 React/Vue 中可能导致状态更新问题,建议使用返回新数组的方法。 - 箭头函数简写:
arr.map(x => x * 2)优于arr.map(function(x) { return x*2 }) - 性能优化:避免在循环中频繁使用
splice,时间复杂度较高。

浙公网安备 33010602011771号