JavaScript 数组的方法总结

数组方法大全

(一)检测方法

检测一个对象是否为一个数组

① instanceof 操作符

let arr = []
arr instanceof Array // true

② Array.isArray( )

let arr = []
Array.isArray(arr) // true  IE9以下不支持该方法

(二)转换方法

① toString( )

返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
var arr = [1,2,3,4];
console.log(arr.toString()); // '1,2,3,4'

② join( )

将数组转换为字符串,默认情况下与toString()的结果一致,不一样的是join()方法可以指定具体的分隔符,分隔符作为方法的实参以字符串形式传入。

③ valueOf( )

返回原数组

(三)栈方法

① push( )

可以接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度,该方法会改变原数组。

② pop( )

从数组末尾删除一个元素,返回被删除的元素,该方法会改变原数组。

(四)队列方法

① shift( )
删除数组的第一个元素,并将该元素返回,该方法会改变原数组。

② unshift( )
在数组开头添加一个或多个元素,并返回新数组的长度,该方法会改变原数组。

(五)重排序方法

① reverse()
反转数组,并返回反转后的数组,该方法会改变原数组。

② sort()
用于对数组元素进行排序,默认按照Unicode编码进行升序排列,除此之外还可以自定义排序,这时需要一个回调函数作为方法的参数,函数需要两个形参。该方法会改变原数组。
排序原理:回调函数会执行很多次(具体根据数组的复杂程度而言),每次都随机的抽出数组的两个元素a,b作为实参,按照原数组的顺序,a一定在b前面,如果结果大于0,则交换位置;结果等于0,则证明a与b相等,不交换位置;如果小于0,则a与b不交换位置。

var arr = [2,3,1,5,4];
arr.sort(function(a,b){
    return a-b;//降序改为b-a
})

(六)操作方法

①concat( )
先复制当前数组,然后再把实参添加至新创建的数组中,并返回新的数组,该方法不会改变原数组。

var arr = [1,2,3,4,5];
arr.concat();//复制arr数组
arr.concat(6,7,8);//将6,7,8三个元素添加至新创建的数组末尾

②slice( )

用于截取数组,该方法需要两个参数,第一个参数表示截取的开始索引位置(包括),第二个参数表示截取的结束位置(不包括),其中,第二个参数不是必要的,如果没有第二个参数,则默认从开始索引开始截取至结尾。该方法不会改变原数组,只是将截取的元素储存于一个新的数组中,并返回这个数组。

var arr = [2,1,3,2,4];
arr.slice(1); //[1,3,2,4]
arr.slice(1,2); //[1]

③splice()
这个方法有以下三种功能:
删除:可以删除任意数量的元素,只需指定两个参数,要删除的第一个元素的索引和要删除的数量。

var arr = [2,1,3,2,4];
arr.splice(0,2);//代表从索引为0的元素开始往后删除两个元素,返回被删除的元素所组成的数组:[2,1]

插入:可以指定位置插入任意数量的元素,需要提供三个参数,起始位置、0(要删除的数量)、要插入的元素。

var arr = [2,1,3,2,4];
arr.splice(0,0,5);//代表从索引为0的位置前面插入一个元素5,返回的是一个空数组(因为没有删除元素)

替换:可以向指定位置插入任意数量的元素,且同时删除任意数量的元素,需要三个参数,起始位置、要删除的数量和要插入任意数量的元素。

var arr = [2,1,3,2,4];
arr.splice(2,2,6);//从索引为2的位置开始删除两个元素,返回被删除的元素,然后由第三个参数替换被删除元素所在的位置

注意:该方法始终都会返回一个数组,该数组中包含从原数组中删除的元素,如果没有删除任何元素,则返回一个空数组。

(七)位置方法

① indexOf( )

查找数组中的元素(全等比较),一旦找到则返回这个元素在数组中的索引,如果没有找到则返回-1。

② lastIndexOf( )

与indexOf()基本一致,不同的是该方法是从数组的末尾开始寻找。

(八)迭代方法

① every( )

对数组中的每一个元素执行回调函数,如果该函数对每一个元素都返回true,则返回true。

② some( )

对数组中的每一个元素运行回调函数,如果该函数对任意一个元素返回true,则返回true。

③ filter( )

filter意为过滤的意思,在这里也正是过滤的作用,利用回调函数过滤数组的某些元素(留下结果为 true 的元素),返回一个新的数组,该方法不会改变数组。

var arr = [2,1,3,2,3,4];

var result = arr.filter(function (item,index,array) {
    return item > 2;
});

console.log(arr); //[2,1,3,2,3,4]
console.log(result); //[3,3,4]

④ forEach( )

循环,太常用了这个~~

⑤ map( )

加工,每个元素都执行回调函数后返回的结果~

 

(九)归并方法

reduce( ) 与 reduceRight( )

这两个方法都会迭代数组的所有元素,然后构建一个最终返回的值。其中,reduce()方法从数组的第一个元素开始,逐个遍历到最后,而reduceRight()则从数组的最后一个元素开始,向前遍历。这两个方法都接收两个参数:一个是在每一个元素上运行的回调函数,另一个(可选的)作为归并基础的初始值。回调函数接收4个参数:前一个值,当前值,元素索引和数组对象。这个函数返回的任何值都会作为第一个参数自动传给下一个元素。

var values = [1,2,3,4,5];
var sum = values.reduce(function(prev, cur, index, array){
    return prev + cur;
});
console.log(sum); //15

(十)ES 7 新增的方法 —— includes( )

用于检查数组中是否含有指定的元素,如果有则返回true。

let arr = [1,2,3,4,5]
arr.includes(2) //true
原文地址:https://www.cnblogs.com/jonas-von/p/9959060.html