js陣列方法總結
傳統的js陣列方法
concat(),push(),pop(),shift(),unshift(),splice(),slice(),join(),sort(),reverse();
ES5新增陣列方法:
indexOf(),lastIndexOf(),map(),filter(),forEach(),some(),every(),reduce(),reduceRight();
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]]
看到上面的區別了嗎?
如果concat的不是一個數組,元素則直接新增到原陣列末尾,陣列則把每一項分別新增到原陣列末尾;
如果concat的是個二維陣列,則把陣列中的每一項新增到原陣列末尾,二維陣列中陣列整體新增到原陣列末尾;
應用,實現降維陣列
例:
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();
迭代陣列所有項