# js 数组方法

### **一、增删改方法**

`push()`方法接收任意数量的参数，并将它们添加到数组末尾，返回数组的最新长度

`unshift()`在数组开头添加任意多个值，然后返回新的数组长度

`pop()` 方法用于删除数组的最后一项，同时减少数组的 `length` 值，返回被删除的项

`shift()`方法用于删除数组的第一项，同时减少数组的 `length` 值，返回被删除的项

`splice`功能强大，可以同时对数组进行增删改的操作

### **二、搜索和位置方法**

`indexOf()`返回要查找的元素在数组中第一次出现的下标，如果没找到则返回 -1

`lastIndexOf()`返回要查找的元素在数组中最后一次出现的下标，如果没找到则返回 -1

`find()`返回第一个匹配的元素

`findIndex()`返回满足条件的数组下标，找不到则返回 -1

`includes()`返回要查找的元素在数组中的位置，找到返回`true`，否则`false`

`at()` 方法接收一个整数值并返回该索引对应的元素，允许正数和负数。负整数从数组中的最后一个元素开始倒数。

### **三、排序方法**

`reverse()`将数组元素方向反转，改变原数组

`sort()`方法接受一个回调函数，回调中两个参数的顺序决定升序或是降序

### **四、操作方法方法**

`join()` 将数组转换为字符串，接收一个参数，作为数组每一项间的连接符,影响原数组

`slice()` 截取数组中一部分，用于创建一个包含原有数组中一个或多个元素的**新数组**，接受两个参数，第一个是开始截取的下标，第二个是结束的下标，不包含这个值，如果只有一个参数，则截取从下标开始的所有项，不会影响原始数组

`concat()`会连接两个数组，首先会创建一个当前数组的副本，然后再把它的参数添加到副本末尾，最后返回这个**新构建的数组**，不会影响原始数组

### **五、迭代方法**

`some()`对数组中的每一项都执行回调函数，如果有一项满足函数的条件，则这个方法返回 true

`any()`对数组中的每一项都执行回调函数，如果有一项满足函数的条件，则这个方法返回 true

`every()`对数组中的每一项都执行回调函数，如果每一项都满足函数的条件 ，则这个方法返回 true

`forEach()`对数组中的每一项都执行回调函数，没有返回值，与for循环相似

`map()`对数组中的每一项都执行回调函数，返回满足条件的项组成新数组之后返回

`reduce()`对数组中的每一项都执行回调函数，返回由每次函数调用的结果构成的数组

对数组进行累加操作，接受两个参数，第一个参数为回调函数,如果没有第二个参数，pre的值为数组的第一项，pre与第二项item相加后的值重新作为pre值与第三项相加，直到最后一项，如果有第二个参数，则pre的初始值为第二个参数与数组第一项相加

`reduceRight()`与 `reduce` 相同 不同的是 `reduce` 是从左往右处理而 `reduceRight` 是从右往左处理

### **六、其它方法**

`Array.isArray()`用于确定传递的值是否是一个 Array。

`keys()`方法返回一个包含数组中每个索引键的 Array Iterator 对象。

`values()`方法用于从数组创建一个包含数组`值`的可迭代对象

`entries()`方法返回一个数组的迭代对象，该对象包含数组的键值对 `(key/value)` 。  
迭代对象中数组的索引值作为 `key`， 数组元素作为 `value`。

`copyWithin()`拷贝数组的某些元素到数组的某个位置 返回拷贝后的数组本身

`fill()`用一个固定值填充一个数组中从起始索引到终止索引内的全部元素。不包括终止索引。返回修改后的原始数组，不创建新数组。
