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