Javascript Array Functions --Js 数组方法汇总

时间:2021-05-07 19:03:55

一、Join

Join是Array类的一个原型方法,作用是把Js数组的元素以传入方法的参数字符隔开,默认使用",",可以传空格。

使用方法:

 

1 var arrJoin=['a','b','c'];
2 
3  arrJoin.join();/*return "a,b,c"*/
4 
5  arrJoin.join("|") /*return "a|b|c"*/

 

非数组或者类数组要使用该方法可以通过call()方法来调用Array原型的方式:
/*非Array类型对象要使用Array原型的方法,必须声明length成员,且key必须为可以索引值,即int。*/

var arrLike={"0":"a","1":"b","2":"c",length:3};

 Array.prototype.join.call(arrLike,"|");/*return "1|2|3"*/

/*非Array类型对象的key如果不是从0开始,则会从第一个key的值代表的索引开始返回值:*/

var arrLike2={"1":"a","2":"b","3":"c",length:3};/*key从1开始,而不是0*/

 Array.prototype.join.call(arrLike,"|");/*return "|a|b",长度为3,索引从0开始,但0处没有值,于是0位置空,返回|a|b*/

 

二、reverse
reverse方法倒序调用数组,会修改数组的引用,即调用reverse的数组将被修改。
 var arrReverse=[1,2,3];

 arrReverse.reverse(); //arrReverse:[3,2,1]

  同样,类数组对象也可以调用该方法

var arrLike={"0":"a","1":"b","2":"c",length:3};

Array.prototype.reverse.call(arrLike);//arrLike:{0:"c",1:"b",2:"c"}

 

三、sort
 sort方法会对数组进行排序,不修改原数组,默认排序方式为字母表.注意:null的以字符串'null'的形式排序,undefined则出现在最后

 

var arrSortDef=[5,2,1,3,5,"B","A","a","z","组","数",null,undefined]

arrSortDef.sort();//return [0,1,2,3,5,"A","B","a",null,"z","数","组",undefined]

 

 sort方法也可以不按字母表的顺序进行排序,这时需要设置sort的参数为一个比较函数:

var arrSortCus=[1,3,2,5,0];

/*现在使用数值大小进行排序,数值大的排在前面*/

arrSortcus.sort(function(a,b){return b-a})

  四、concat()

concat()可以用来组合拼接多个数组,且不修改调用的数组,而是返回一个新的数组,concat不会扁平化第一层之后的数组。

 

var arrConcat=[1,2];
/*return [1,2,"First","Second",["Third",3],Forth,4]*/
arrConcat.concat(["First"],["Second"],[["Third",3],Forth,4]);

 

  五、slice()
slice的作用的获取数组指定位置的元素。需要两个参数,分别指定指定位置开始和结束,并返回两个位置之间元素组成的数组(不包括最后一个参数指定的位置)。不修改调用数组。

 

var arrSlice=[1,2,3,4,5,6,7];
arrSlice.slice(2,6)//return [3,4,5,6]


  六、splice()

splice是array类中唯一一个可以同时删除和新增元素的数组方法。并且会修改调用的数组。
  1. 首先splice删除元素为例。当只给splice传递一个参数时,即指定从该参数位置处开始(包括该位置)截取到数组末尾,返回值为被截的数组,并修改调用数组(即为被截的原数组剩下元素组成的数组);而当传给两个参数时,前者指定截取的位置,后者指定从前者(包含)位置开始删除的长度
var arrSplice=[1,2,3,4,5,6,7,8];

arrSplice.splice(4)/*return [5,6,7,8];arrSplice:[1,2,3,4]*/

arrSplice.splice(4,2)/*return [5,6];arrSplice:[1,2,3,4,7,8]*/

 

  2. splice 同时删除和插入

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

/*删除2,3,4;插入a,b,c*/

arrSpliceAddAndDele.splice(1,3,'a','b','c')/*arrSpliceAddAndDele:[1,'a','b','c']*/

 

六、push与pop
push与pop把数组当作栈来使用,push压入栈尾,pop从栈尾出栈。 会修改调用数组。
var stack=[];

stack.push(1);/*stack:[1]*/

stack.push(2,3);/*stack:[1,2,3]*/

stack.pop();/*stack:[1,2]*/

 七、unshift与shift

unshift,shift和push,pop的功能相同,但作用的位置不同,unshift和shift是作用在最前的元素。也即是unshift在数组最前方插入元素,而shift则把最前方的元素删除。会修改调用数组。
var arr=[];

arr.unshift(1);/*a:[1],return 1*/

arr.unshift([2]);/*a:[1,[2]]*/

arr.shift()/*a:[[2]] return:1*/

 

 八、toString与toLocalString

toString扁平化返回数组每个元素组成的字符串。toLocalString在数组中已经抛弃
var arrString=[1,2,3,4,['a','b',['c','d']]];

arrString.toString()/*return "1,2,3,4,a,b,c,d" */