建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

如何将伪数组转换成数组

时间:2011-03-13 10:18来源: 作者: 点击:
这里把符合以下条件的对象称为伪数组 1,具有length属性 2,按索引方式存储数据 3,不具有数组的push,pop等方法 如 1,function内的arguments 。 2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsB

如何将伪数组转换成数组?这里把符合以下条件的对象称为伪数组
1,具有length属性
2,按索引方式存储数据
3,不具有数组的push,pop等方法


1,function内的arguments 。
2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,childNodes/children 等方式获取的集合(HTMLCollection,NodeList)等。
3,特殊写法的对象 ,如

1 var obj={};
2 obj[0] = "一";
3 obj[1] = "二";
4 obj[2] = "三";
5 obj.length = 3; 

它们不具有数组的一些方法如push, pop, shift, join等。有时候需要将这些伪数组转成真正的数组,这样可以使用push, pop等方法。以下是工具函数makeArray

01 function makeArray(obj){
02     var rs=[],len=obj.length;
03     try{
04         rs = [].slice.call(obj,0);
05     }catch(e){//for IE
06         for(var i=0;j=obj[i++];){
07             rs.push(j);
08         }                   
09     }
10     return rs;  
11 }

以下分别测试以上三种伪数组

01 //定义一个函数fun,内部使用makeArray将其arguments转换成数组
02 function fun(){
03     var ary = makeArray(arguments);
04     alert(ary.constructor );
05 }
06 //调用
07 fun(3,5);
08   
09   
10 //假设页面上有多个段落元素p
11 var els = document.getElementsByTagName("p");
12 var ary1 = makeArray(els);
13 alert(ary1.constructor);
14   
15   
16 //特殊的js对象(如jquery对象)
17 var obj={};
18 obj[0] = "一";
19 obj[1] = "二";
20 obj[2] = "三";
21 obj.length = 3; 
22   
23 var ary2 = makeArray(obj);
24 alert(ary2.constructor);
(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片