JavaScript 数组方法速查表
你最常用的 JavaScript 数组方法,以及各自返回什么,还有关键的一点——它是否修改原数组还是返回一个新数组。把这一列搞对能防止一整类 bug:map 和 filter 是安全的,因为它们不动原数组,而 sort、reverse、splice 会就地改变它。
更新 2026-07-06
| 方法 | 作用 | 返回 | 修改 |
|---|---|---|---|
| map() | 转换每个元素 | 新数组 | 否 |
| filter() | 保留通过测试的元素 | 新数组 | 否 |
| reduce() | 把数组归并为单个值 | 任意值 | 否 |
| forEach() | 对每个元素运行一个函数 | undefined | 否 |
| find() | 第一个通过测试的元素 | 元素 / undefined | 否 |
| findIndex() | 第一个匹配的索引 | 索引 / -1 | 否 |
| some() | 至少一个通过则为 true | 布尔值 | 否 |
| every() | 全部通过则为 true | 布尔值 | 否 |
| includes() | 某个值是否存在 | 布尔值 | 否 |
| indexOf() | 某个值的索引 | 索引 / -1 | 否 |
| slice() | 复制数组的一部分 | 新数组 | 否 |
| concat() | 把多个数组合并为一个新数组 | 新数组 | 否 |
| join() | 把元素合并成一个字符串 | 字符串 | 否 |
| flat() | 展平嵌套数组 | 新数组 | 否 |
| flatMap() | map() 后展平一层 | 新数组 | 否 |
| at() | 按索引取元素(支持负数) | 元素 | 否 |
| push() | 在末尾添加一个或多个项 | 新长度 | 是 |
| pop() | 删除最后一项 | 被删除的项 | 是 |
| shift() | 删除第一项 | 被删除的项 | 是 |
| unshift() | 在开头添加项 | 新长度 | 是 |
| splice() | 在任意索引添加/删除项 | 被删除的项 | 是 |
| sort() | 就地排序数组 | 该数组 | 是 |
| reverse() | 就地反转数组 | 该数组 | 是 |
| fill() | 用一个静态值填充 | 该数组 | 是 |
| Array.from() | 从可迭代对象创建数组 | 新数组 | 否 |
| Array.isArray() | 检查一个值是否是数组 | 布尔值 | 否 |
提示:当你需要一个排序后的副本而不动原数组时,先展开 —— [...arr].sort()。现代 JavaScript 还新增了返回新数组的非修改版(toSorted、toReversed、toSpliced、with)。