javascript中的Array對象的方法

  • 檢測數組:只考慮一個全局作用域的情況下可以使用value instanceof Array 來判斷一個對象是否是數組;如果要考慮多個全局的作用域,則使用Object.prototype.toString.call(value) == "[object Array]"

  • 轉換方法:toString toLocaleString  join

  • 棧方法:(後進先出)在數組末尾插入一項,在數組末尾彈出一項。push:在數組末尾插入一項或多項,並返回現在的數組長度;pop:彈出數組最後一項,並返回。

  • 隊列方法:(先進先出)在數組末尾插入一項,在數組開頭彈出一項。push,shift:在數組開頭彈出一項。也可以用unshift,在數組開頭插入一項,以及pop方法,在數組末尾彈出一項。

  • 排序方法:reverse:將原數組的順序弄反。sort:傳入一個比較的函數,將該數組重新排序。比較函數會傳入兩個參數,第一個參數是前一項,第二個參數是後一項,如果第一個參數應該位於第二個參數之前,則返回負數,如果兩個參數相等,則返回零,如果第一個參數應該位於第二個參數之後,則返回正數。

  • 操作方法:concat:基於當前數組和傳入參數創建一個新的數組。參數中如果是數組,則會將其每一項都添加到當前數組中,如果不是數組,則會將其添加到當前數組的末尾。

var a = [1, 2, 3];
var b = a.concat(4, [5, 6]);
console.log(b);   // 1,2,3,4,5,6

       slice:基於當前數組的一項或多項創建一個數組。slice可以傳入一個或兩個參數,即返回項在原數組中的起始位置和結束位置。如果只傳入一個參數,則表示返回該參數指定位置到當前數組末尾的所有項。如果傳入兩個參數,則表示返回第一個參數指定的起始位置到第二個參數制定的末尾位置(不包括結束位置項)的所有項。slice是不會影響原數組的哦。

var a = [1, 2, 3, 4, 5];
var b = a.slice(2);
var c = a.slice(2, 3);
console.log(b);     // 3,4,5
console.log(c);     // 2

      splice:數組方法中最複雜的一個方法,splice需要傳入兩個或兩個以上的參數,第一個參數是刪除或插入項的起始位置,第二個參數是刪除幾項,第三個參數以及後面的參數表示插入的項。splice 會修改原數組的,返回值是刪除的項。

var a = [1, 2, 3, 4, 5, 6];
a.splice(0, 2);                 // [3,4,5,6]
a.splice(1, 0, 7, 8);               // [1,7,8,2,3,4,5,6]
a.splice(1, 2, 7, 8);               // [1,7,8,4,5,6]
  • 位置方法:位置方法有兩個,在ECMAScript5中才提供的。分別爲indexOf()和lastIndexOf(),這兩個方法都傳入兩個參數,第一個參數是需要查找的項,第二個參數是查找的起點位置。如果沒有查到,則返回-1。其中在查找中比較每一項和第一個參數時是使用全等的操作符,類型也是需要相等的。

    在只支持ECMAScript3的老式瀏覽器中,可以使用jquery裏面的$.inArray(val, arr) 方法。

var arr1 = ["1", 2, "3", "3", 1, 2, 5, 6];

// indexOf方法
console.log(arr1.indexOf(2));                   // 1
console.log(arr1.indexOf(2, 2));              // 5
console.log(arr1.indexOf(1));                   // 4   
console.log(arr1.lastIndexOf(2));               // 5
console.log(arr1.indexOf(99));                  // -1

  • 迭代方法:ECMAScript5定義了5個迭代方法,都有兩個參數。第一個參數是在每一項上運行的回調函數,第二個參數是運行該函數的作用於對象。回調函數有三個參數,第一個參數是當前項,第二個參數是當前運行的項在數組中的位置,第三個參數是數組的對象。

    1)every:對數組中每一項都運行給定函數,當該函數對每一項都返回true,則返回true。

    2)filter:對數組中每一項都運行給定函數,將返回true的項組成一個數組並返回。

    3)forEach:對數組中每一項都運行給定函數,該方法沒有返回值。

    4)map:對數組中每一項都運行給定的函數,將每一項函數的運行結果組成數組並返回。

    5)some:對數組中每一項都運行給定函數,只要有一項是返回true的,結果就返回true。

var arr1 = [1, 2, 3, 4];
var r = arr1.every(function(item, index, arr) {
   if (item > 0) {
       return true;
   }
});

console.log(r); // true

     ---------------------以上的方法都不會修改數組的值

  • 歸併方法:ECMAScript5新加了兩個歸併數組的方法:reduce()和reduceRight()。這兩個方法都會迭代數組中的所有項,然後構建一個最終的返回值。有兩個參數,第一個參數是在每一項上執行的函數,第二個參數是歸併基礎的初始值。函數有四個參數:前一項,當前項,項的索引,數組對象。這個函數返回的任何值都會成爲第一個參數傳入下一項。

var arr2 = [1, 2, 3, 4];
var r1 = arr2.reduce(function(pre, cur, index, arr) {
   return pre + cur;
});
console.log(r1); // 10


前端悟飯


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章