js将伪数组或者集合转换为数组

快乐打工仔 分类:实例代码

在javascript中,有很多对象或者数组非常类似于数组。

比如arguments对象或者使用getElementsByTagName()方法获取的元素集合。

但是这些对象或者集合并不能够使用array数组的方法,比如push方法或者其他方法。

所以为了操作方便,我们可以将它们转换为数组,下面就做一下简单介绍。

一.针对arguments对象:

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浏览器无效,不过我们可以进行一下转换,代码片段如下:

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;
      }
    }

回复

我来回复
  • 暂无回复内容