一:会改变自身的方法

1.array.push(element1, ...elementN)

添加一个或多个元素到数组的末尾,并返回数组新的长度

2.array.unshift(element1, ...elementN)

在数组的开头插入一个或多个元素,并返回数组的新长度

3.array.splice(start, deleteCount[, item1[, item2...])

在任意的位置给数组添加或删除任意个元素(拼接),返回被删除的元素组成的数组,没有则返回空数组

start: 开始操作的索引
deleteCount:要移除的数组元素的个数
itemN:要添加进数组的元素,如果不指定,则splice只删除数组元素

二:不会改变自身的方法

4.array.join([separator = ','])

将数组中的所有元素连接成一个字符串(默认用逗号作为分隔符,如果separator是一个空字符串,那么数组中的所有元素将被直接连接);
如果元素是undefined或者null,则会转化成空字符串

5.array.slice([begin = 0 [, end = this.length - 1]])

把数组中一部分的浅复制(shallow copy)存入一个新的数组对象中,并返回这个新的数组;
不修改原数组,只会返回一个包含了原数组中提取的部分元素的一个新数组

三:遍历方法

6.array.forEach((v, i, a) => {})

让数组的每一项都执行一次给定的函数;
v表示当前项的值,i表示当前索引,a表示数组本身;

forEach遍历的范围在第一次调用 callback前就会确定。调用forEach后添加到数组中的项不会被 callback访问到。如果已经存在的值被改变,则传递给 callback的值是 forEach遍历到他们那一刻的值。已删除的项不会被遍历到。

7.array.filter((v, i, a) => {})

使用指定的函数测试所有元素,并创建一个包含所有测试通过的元素的新数组;
callback函数返回一个布尔值,true即通过测试;
callback只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用;

不会改变原数组

8.array.map((v, i, a) => {})

返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组;
map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)

9.array.reduce(callback[, initialValue])

该方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始合并,最终为一个值;

callback参数:
previousValue:上一次调用回调返回的值,或者是提供的初始值(initialValue)
currentValue: 数组中当前被处理的元素
index: index
array: 调用的数组

如果 initialValue 在调用 reduce 时被提供,那么第一个 previousValue 等于 initialValue ,并且currentValue 等于数组中的第一个值;如果initialValue 未被提供,那么previousValue 等于数组中的第一个值,currentValue等于数组中的第二个值。

10.array.find((v, i, a) =>{})【有兼容性问题目前】

返回数组中满足测试条件的第一个元素,如果没有满足条件的元素,则返回undefined