javascript Array方法總結

Array

  • toString() 返回數組中每一個值的字符串形式拼接而成的以逗號分隔的字符串前端

    var arr = [1,2,4,5];
    console.log(arr.toString());//1,2,4,5
  • valueOf() 返回的仍是數組數組

    var arr = ["1","2","4","5"];
    console.log(arr.valueOf());//["1","2","4","5"]
  • join() 返回字符串,使用不一樣分隔符來構建字符串【默認爲逗號】函數

    var arr = [1,2,3,4,5];
    console.log(arr.join());//1,2,3,4,5
    console.log(arr.join(""));//12345
    console.log(arr.join("|"));//1|2|3|4|5

棧方法

  • push() 棧方法,添加到數組末尾,返回修改後數組的長度code

  • pop() 棧方法,從數組末尾移除最後一項,返回移除的項對象

隊列方法

  • shift() 隊列方法,取得數組第一項排序

  • unshift() 隊列方法,添加到數組前端索引

    var colors = [];
    var count = colors.push("red","blue"); // 2
    //colors = ["red","blue"];
    
    count = colors.unshift("green","white"); //4
    //colors = [「green」,"white","red","blue"]
    
    colors.pop();   //"blue"
    colors.shift(); //"green"

重排序方法

  • reverse() 反轉數組項的順序,返回值是通過反轉後的數組隊列

  • sort() 默認按照升序排列數組【調用每一個數組項的toString()方法比較字符串。即便數組都是數值,也是比較字符串】,可接受比較函數做爲參數。返回值是通過排序後的數組rem

    var arr = [10,2,7,3,5];
    arr.reverse();//[5,3,7,2,10]
    arr.sort();//[10,2,3,5,7]
    
    function compare1(v1,v2){
        if(v1 < v2)
            return -1;
        else if( v1 > v2)
            return 1;
        else 
            return 0;
    }
    
    arr.sort(compare1);//[2,3,5,7,10]
    
    //另外一種更爲簡便的方式
    function compare2(v1,v2){
        return v2-v1;
    }
    
    arr.sort(compare2);//[10,7,5,3,2]

操做方法

  • concat() 基於當前數組中全部項建立一個新數組。在沒有參數的時候,只是複製當前數組並返回副本。有參數則將值添加到數組末尾字符串

    var colors=["red","blue"];
    var colors2 = colors.concat("yellow",["black","white"]);
    //["red","blue","yellow","black","white"]
  • slice() 建立一個新數組

    • slice(start,end),返回起始和結束位置之間的項【不包括結束位置】。結束位置小於起始位置返回空數組

    • slice(start),返回從start位置到末尾的全部項
      如果負數,用數組長度+該負數來表示位置

    var colors = ["red","green","blue","black","yellow"];
        var colors2 = colors.slice(1);//["green","blue","black","yellow"]
        var colors3 = colors.slice(1,4);//["green","blue","black"]
        var colors4 = colors.slice(-2,-1);//與slice(3,4)效果相同。["black"]
  • splice() 返回被刪除的項。splice(start,delete_count,insert_item[可選])

    • 刪除 splice(start,count) start要刪除的第一項的位置,count要刪除的項數

    • 插入 splice(start,0,inserts) start要插入的位置,0(要刪除的項數爲0),inserts要插入的項(能夠是任意多個項)

    • 替換 splice(start,d_count,inserts) start起始位置,d_count爲要刪除的項數,inserts爲要插入的項。插入的項數與刪除的項數沒必要相等。

      var colors = ["red","green","blue","black","yellow"];
          var removed = colors.splice(0,1);//刪除第一項
          //colors = ["green","blue","black","yellow"];
          //removed = ["red"]
          
          removed = colors.splice(1,0,"pink","orange");//從位置1開始插入2項
          //colors = ["green","pink","orange","blue","black","yellow"];
          //removed = [];沒有刪除元素,返回空數組
          
          removed = colors.splice(1,1,"red","purple");//從位置1刪除一個,再插入2項
          //colors = ["green","red","purple","orange","blue","black","yellow"];
          //removed = ["pink"];

位置方法

  • indexOf() 從數組開頭開始查找所在項的位置

  • lastIndexOf() 從數組末尾開始向前查找

    比較參數和數組中每一項時,使用全等操做符。=== 
    沒有找到時返回-1

迭代方法。對數組中每一項運行給定函數。

  • every() 若函數對每一項都返回true,則返回true

  • filter() 返回這個函數會返回true的數組

  • forEach() 沒有返回值,本質上與使用for循環迭代數組同樣。

  • map() 返回每次函數調用的結果組成的數組

  • some() 若是函數對任一項返回true,則返回true
    【兼容性】IE9+,Chrome,Firefox 2+,Safari 3+,Opera 9.5+支持

【注意區分every()和some()】

var numbers=[1,2,3,4,5,6,7];

var everyResult = numbers.every(function(item,index,array){
    return (item > 3);
});
//everyResult的值爲false。由於1,2,3返回的是flase,而每一項都返回true纔會返回true

var someResult = numbers.some(function(item,index,array){
    return (item > 3);
});
//someResult的值爲true。由於有返回true的值,則返回true

var filterResult = numbers.filter(function(item,index,array){
    return (item > 2);
});
//filterResult的值爲[3,4,5,6,7],返回符合條件的值

var mapResult = numbers.map(function(){
    return item*2;
});
//mapResult的值爲[2,4,6,8,10,12,14],返回每一個數的結果

歸併方法

  • reduce() 從數組第一項開始,逐個遍歷到最後

  • reduceRight() 從數組的最後一項開始,向前遍歷到第一項

都支持4個參數。(prev【前一個值】,cur【當前值】,index【項的索引】,array【數組對象】)
reduce()和reduceRight()的差異在於從哪頭開始遍歷數組。除此以外都同樣。
【兼容性】IE9+,Chrome,Firefox 3+,Safari 4+,Opera 10.5支持
這個函數返回的任何值都會做爲第一個參數自動傳給下一項。第一次迭代從數組的第二項開始。

//利用reduce求數組中全部值的和
    var values = [1,2,3,4,5];
    var sum = values.reduce(function(prev,cur,index,array){
        return prev + cur;
    });
    //sum的值爲15;
相關文章
相關標籤/搜索