js將偽陣列或者集合轉換為陣列

antzone發表於2017-04-04

在javascript中,有很多物件或者陣列非常類似於陣列。

比如arguments物件或者使用getElementsByTagName()方法獲取的元素集合。

但是這些物件或者集合並不能夠使用array陣列的方法,比如push方法或者其他方法。

所以為了操作方便,我們可以將它們轉換為陣列,下面就做一下簡單介紹。

一.針對arguments物件:

[JavaScript] 純文字檢視 複製程式碼
function func(a,b,c,d){
  var num=a+b+c+d;
  var arr=Array.prototype.slice.call(arguments,1,3); 
  return arr;
}
console.log(func(1,2,3,4));

(1).prototype可以參閱javascript prototype一章節。

(2).slice()方法可以參閱javascript Array slice()一章節。

(3).call()可以參閱js call()一章節。

(4).arguments可以參閱javascript arguments一章節。

二.針對元素集合:

上面的方式針對元素集合具有一定的瀏覽器相容性問題。

對於低版本的IE瀏覽器無效,不過我們可以進行一下轉換,程式碼片段如下:

[JavaScript] 純文字檢視 複製程式碼
function realArray(NodeList) {
      try {
        return Array.prototype.slice.call(NodeList);
      } 
      catch (e) {
        var ret = [], i = 0, len = NodeList.length;
        for (; i < len; i++) {
          ret[i] = (NodeList[i]);
        }
        return ret;
      }
    }

相關文章