在 JavaScript 中,有一些数组方法会直接修改原始数组,这些方法也被称为“变异方法”(mutator methods)。以下是常见的会改变原数组的方法及其功能描述:
### 常见修改原数组的数组方法
#### `push()`
向数组的末尾添加一个或多个元素,并返回新的长度。
```javascript
const arr = [1, 2, 3];
arr.push(4); // arr 变为 [1, 2, 3, 4]
```
#### `pop()`
删除数组的最后一个元素,并返回该元素。
```javascript
const arr = [1, 2, 3];
const last = arr.pop(); // arr 变为 [1, 2]
```
#### `shift()`
删除数组的第一个元素,并返回该元素。
```javascript
const arr = [1, 2, 3];
const first = arr.shift(); // arr 变为 [2, 3]
```
#### `unshift()`
向数组的开头添加一个或多个元素,并返回新的长度。
```javascript
const arr = [1, 2, 3];
arr.unshift(0); // arr 变为 [0, 1, 2, 3]
```
#### `splice()`
可以用于删除或添加数组中的元素。它接受至少三个参数:起始索引、删除个数和可选的新元素列表。
```javascript
const arr = [1, 2, 3, 4];
arr.splice(2, 1, 5); // arr 变为 [1, 2, 5, 4]
```
#### `reverse()`
反转数组中元素的顺序,并返回反转后的数组。
```javascript
const arr = [1, 2, 3];
arr.reverse(); // arr 变为 [3, 2, 1]
```
#### `sort()`
对数组的元素进行排序,默认按字符串顺序排序,但可以通过提供比较函数自定义排序规则。
```javascript
const arr = [3, 1, 2];
arr.sort(); // arr 变为 [1, 2, 3]
```
#### `fill()`
用一个固定值填充数组中从起始索引到终止索引(不包括)的全部元素。
```javascript
const arr = [1, 2, 3, 4];
arr.fill(0, 1, 3); // arr 变为 [1, 0, 0, 4]
```
#### `copyWithin()`
将数组中的一部分复制到同一数组中的另一个位置,并覆盖原有元素,返回修改后的数组。
```javascript
const arr = [1, 2, 3, 4, 5];
arr.copyWithin(0, 3); // arr 变为 [4, 5, 3, 4, 5]
```
这些方法直接修改原始数组,因此在使用时需要注意对数据状态的影响。如果需要保持原数组不变,可以先通过 `slice()` 或展开运算符 `...` 创建副本再操作。