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();

迭代數組所有項


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM