傳統的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();
迭代數組全部項