传统的js数组方法javascript
concat(),push(),pop(),shift(),unshift(),splice(),slice(),join(),sort(),reverse();java
ES5新增数组方法:数组
indexOf(),lastIndexOf(),map(),filter(),forEach(),some(),every(),reduce(),reduceRight();app
1,concat() 用于链接两个数组,返回新构建的数组函数
var arr = [2,3,5]; var newarr = arr.concat([5,3,8]); console.log(newarr)//[2,3,5,5,3,8]
var arr = [2,3,5]; var newarr = arr.concat(5,[3,8]); console.log(newarr)//[2,3,5,5,3,8]
var arr = [2,3,5]; var newarr = arr.concat([5,[3,8]]); console.log(newarr)//[2,3,5,5,[3,8]]
看到上面的区别了吗?prototype
若是concat的不是一个数组,元素则直接添加到原数组末尾,数组则把每一项分别添加到原数组末尾;blog
若是concat的是个二维数组,则把数组中的每一项添加到原数组末尾,二维数组中数组总体添加到原数组末尾;排序
应用,实现降维数组ip
例:字符串
var arr = [[1,2],[2,3]]; var newarr = Array.prototype.concat.apply([], arr); console.log(newarr)//[1,2,2,3]
2,push()和pop();
push()是把元素添加到数组末尾,并返回新数组的长度;pop()是把数组中最后一项删除,并返回删除的项;
3,shift()和unshift();
unshift()是把元素添加到数组开头位置,并返回新数组的长度;shift()是把数组中第一项删除,并返回删除的项;
4,splice();
splice()的做用不少,能够删除,添加,替换数组的某些项;
splice()接收不少参数,第一个参数表明起始位置,第二个参数表明删除的个数,第三个参数开始表明插入的数据;返回被删除的项;
var arr = [1,3,3,5]; var newarr = arr.splice(2,0,6,7,8); console.log(arr) //[1,3,6,7,8,3,5] console.log(newarr)//[]
5,slice();
slice()能够接收2个参数,分别表明起始位置和结束位置,返回起始位置到结束位置直接的数据,但不包括结束位置的数据;
若是只有一个参数,表明起始位置,返回从起始位置到末尾的数据;
若是参数是负数,表明从末尾开始计算,-1表明最后一个位置;
6,join();
数组转换为字符串的方法;
7,sort();
数组排序,默认按升序排列;返回排序后的数组;
sort()默认会将数组中的每一项转换为字符串再排序
因此会出现下列状况
var arr = [13,2,1,15,3] var newarr = arr.sort(); console.log(newarr);//[1,13,15,2,3]
因此须要比较函数,sort能够传递一个函数参数,这个函数就是比较函数;
比较函数接收两个参数,若是第一个参数应该位于第二个以前则返回一个负数,若是两个参数相等则返回 0,若是第一个参数应该位于第二个以后则返回一个正数。
arr.sort(function(a, b){ if(a<b){ return -1; }else if(a>b){ return 1; }else { return 0; } })
8,reverse();
反转数组项的顺序
9,forEach();
循环数组的每一项,
10,map();
映射数组的每一项,返回处理后的数组
11,filter();
返回知足过滤条件的数组
12,some();
判断数组中的项是否知足条件,只要有一项知足就返回ture;
13,every();
判断数组中的项是否知足条件,只有所有项都知足才返回ture;
14,indexOf()和lastIndexOf();
接收两个参数,要查找的项和从哪一个位置开始查找(无关紧要);返回元素在数组中的位置,没有找到返回-1;
15,reduce()和reduceRight();
迭代数组全部项