>[info] **[Array.from](https://www.ecma-international.org/ecma-262/6.0/#sec-array.from)** (ES6)
~~~
Array.from(arrayLike[, mapFn[, thisArg]])
~~~
`arrayLike` 想要转换成数组的伪数组对象或可迭代对象。
`mapFn` 可选, 如果指定了该参数,新数组中的每个元素会执行该回调函数。
`thisArg` 可选参数,执行回调函数`mapFn`时`this`对象。
`返回值` 新数组实例。
*****
>[info] **[Array.isArray](https://tc39.es/ecma262/#sec-array.isarray)** (ES5)
> 检测一个值是否为数组
~~~
Array.isArray(obj)
~~~
`返回值` 布尔值。
*****
>[info] **[Array.of](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/of)** (ES6)
~~~
Array.of(element0[, element1[, ...[, elementN]]])
~~~
`elementN` 任意个参数,将按顺序成为返回数组中的元素。
`返回值` 新的 Array 实例。
*****
>[info] **[Array.prototype.map](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map)** (ES5)
> 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回
*****
>[info] **[Array.prototype.forEach](https://www.ecma-international.org/ecma-262/5.1/#sec-15.4.4.18)** (ES5)
> 数组循环遍历
~~~
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
~~~
`callback` 为数组中每个元素执行的函数,该函数接收一至三个参数:
`currentValue`数组中正在处理的当前元素。
`index`可选, 数组中正在处理的当前元素的索引。
`array`可选, forEach() 方法正在操作的数组。
`thisArg`可选, 当执行回调函数`callback`时,用作`this`的值。
`返回值` undefined
>[danger] **注意**
> `forEach()`遍历的范围在第一次调用`callback`前就会确定。调用`forEach`后添加到数组中的项不会被`callback`访问到。
> 如果已经存在的值被改变,则传递给`callback`的值是`forEach()`遍历到他们那一刻的值。已删除的项不会被遍历到。
> 如果已访问的元素在迭代时被修改了(例如使用[`shift()`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift)),之后的元素将被跳过。
*****
>[info] **[Array.prototype.some()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/some)** (ES5)
> 测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。
~~~
arr.every(callback(element[, index[, array]])[, thisArg])
~~~
`callback` 用来测试每个元素的函数,它可以接收三个参数:
`element` 用于测试的当前值。
`index` 可选, 用于测试的当前值的索引。
`array` 可选, 调用`every`的当前数组。
`thisArg` 执行`callback`时使用的 `this` 值。
`返回值` 数组中有至少一个元素通过回调函数的测试就会返回`true`;所有元素都没有通过回调函数的测试返回值才会为false。
*****
>[info] **[Array.prototype.every()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/every)** (ES5)
> 测试一个数组内的所有元素是否都能通过某个指定函数的测试
~~~
arr.every(callback(element[, index[, array]])[, thisArg])
~~~
`callback` 用来测试每个元素的函数,它可以接收三个参数:
`element` 用于测试的当前值。
`index` 可选, 用于测试的当前值的索引。
`array` 可选, 调用`every`的当前数组。
`thisArg` 执行`callback`时使用的 `this` 值。
`返回值` 布尔值
*****
>[info] **[Array.prototype.includes()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes)** (ES7)
> 用来判断一个数组是否包含一个指定的值,根据情况,如果包含则返回 true,否则返回false。
~~~
arr.includes(valueToFind[, fromIndex])
~~~
`valueToFind` 需要查找的元素值。
`fromIndex` 可选, 从`fromIndex`索引处开始查找`valueToFind`。如果为负值,则按升序从`array.length + fromIndex` 的索引开始搜 (即使从末尾开始往前跳`fromIndex` 的绝对值个索引,然后往后搜寻)。默认为 0。
>[danger] **注意**
> 使用`includes()`比较字符串和字符时是区分大小写。
*****
>[info] **[Array.prototype.filter()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)** (ES5)
> 返回一个由通过指定测试方法的所有元素组成的新数组
~~~
var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])
~~~
`callback` 用来测试数组的每个元素的函数。返回`true`表示该元素通过测试,保留该元素,`false`则不保留。它接受以下三个参数:
`element` 数组中当前正在处理的元素。
`index` 可选,正在处理的元素在数组中的索引。
`array` 可选,调用了`filter`的数组本身。
`thisArg` 可选,执行`callback`时,用于`this`的值。
`返回值` 一个新的、由通过测试的元素组成的数组,如果没有任何数组元素通过测试,则返回空数组。
*****
>[info]**[Array.prototype.find()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/find)** (ES6)
~~~
arr.find(callback[, thisArg])
~~~
`callback` 在数组每一项上执行的函数,接收 3 个参数:
`element` 当前遍历到的元素。
`index` 可选, 当前遍历到的索引。
`array` 可选, 数组本身。
`thisArg` 可选, 执行回调时用作`this` 的对象。
`返回值` 数组中第一个满足所提供测试函数的元素的值,否则返回 [`undefined`](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/undefined)。
>[danger] **注意**
在第一次调用`callback`函数时会确定元素的索引范围,因此在`find`方法开始执行之后添加到数组的新元素将不会被`callback`函数访问到。如果数组中一个尚未被`callback`函数访问到的元素的值被`callback`函数所改变,那么当`callback`函数访问到它时,它的值是将是根据它在数组中的索引所访问到的当前值。被删除的元素仍旧会被访问到,但是其值已经是undefined了。
*****
>[info]**[ Array.prototype.flat()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/flat)** (ES2019)
`flat()`方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
~~~
var newArray = arr.flat([depth])
~~~
`depth`可选, 指定要提取嵌套数组的结构深度,默认值为 1。
`返回值` 一个包含将数组与子数组中所有元素的新数组。
*****
>[info] **Array.prototype.concat**
> 数组连接
~~~
var new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
~~~
`valueN` 可选, 数组和/或值,将被合并到一个新的数组中。如果省略了所有`valueN`参数,则`concat`会返回调用此方法的现存数组的一个浅拷贝。详情请参阅下文描述。
`返回值` 新的 Array 实例。
*****
>[info] **Array.prototype.pop()**
> 从数组中删除最后一个元素,并返回该元素的值
*****
>[info] **Array.prototype.push()**
> 将一个或多个元素添加到数组的末尾,并返回该数组的新长度
*****
>[info] **[Array.prototype.shift()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift)**
> 从数组中删除**第一个**元素,并返回该元素的值。此方法更改数组的长度。
*****
>[info] **[Array.prototype.unshift()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/shift)**
> 将一个或多个元素添加到数组的**开头**,并返回该数组的**新长度(该**方法修改原有数组**)**。
*****
>[info] **[Array.prototype.reduce()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce)**
> 方法对数组中的每个元素执行一个由您提供的**reducer**函数(升序执行),将其结果汇总为单个返回值。使用场景: 数组求和求积,数组扁平化等
*****
>[info] **[Array.prototype.reverse()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)**
> 将数组中元素的位置颠倒,并返回该数组。数组的第一个元素会变成最后一个,数组的最后一个元素变成第一个。该方法会改变原数组。
*****
>[info] **[Array.prototype.slice()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/slice)**
> `slice()`方法返回一个新的数组对象,这一对象是一个由 `begin`和`end`决定的原数组的**浅拷贝**(包括`begin`,不包括`end`)。原始数组不会被改变。
*****
>[info] **[Array.prototype.sort()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)**
> 排序
*****
>[info] **[Array.prototype.splice()](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)**
> **`splice()`**方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。
`返回值` **由被删除的元素组成的一个数组**。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。