✅ 不改变原数组(返回新数组)
| 方法 | 功能说明 |
|---|
| map() | 映射,返回每一项处理后的新数组 |
| filter() | 过滤符合条件的项,返回新数组 |
| slice() | 截取数组的一部分,返回新数组 |
| concat() | 合并数组,返回一个新数组 |
| flat() | 扁平化嵌套数组,返回新数组 |
| includes() | 判断是否包含指定元素,返回布尔值 |
| find() / findIndex() | 查找元素 / 索引,返回查找到的结果或索引(未找到返回 undefined / -1) |
| every() / some() | 判断是否所有 / 有一项符合条件,返回布尔值 |
| toSorted() / toReversed() / toSpliced() | ES2023:排序 / 反转 / 剪切,不改原数组,返回新数组 |
❌ 改变原数组(直接修改)
| 方法 | 功能说明 |
|---|
| push() / pop() | 向尾部添加 / 删除元素 |
| shift() / unshift() | 向头部删除 / 添加元素 |
| splice() | 增删改任意位置的元素 |
| sort() | 排序,改变原数组 |
| reverse() | 反转数组 |
| fill() | 用某值填充数组指定范围 |
| copyWithin() | 复制一段到数组的另一个位置,覆盖原内容 |
🔁 特殊说明:forEach
| 方法 | 改变原数组 | 返回新数组 | 说明 |
|---|
| forEach() | 否(本身不改结构) | 否 | 用于遍历每项,执行副作用操作(打印、赋值等) |
注意事项:
- forEach 自身不会修改数组结构,但如果数组元素是引用类型(如对象),在回调中修改它们会影响原数组。
- 不支持 break 或 return,中途不能中断循环。
- 不适合链式处理,可用 for / for...of 替代。
示例:
const arr = [1, 2, 3];
arr.forEach((item) => item + 1);
console.log(arr);