博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将伪数组转换成数组
阅读量:5805 次
发布时间:2019-06-18

本文共 1159 字,大约阅读时间需要 3 分钟。

hot3.png

这里把符合以下条件的对象称为伪数组:

1,具有length属性

2,按索引方式存储数据

3,不具有数组的push,pop等方法

 

1,function内的arguments 。

2,通过document.forms,Form.elements,Select.options,document.getElementsByName() ,document.getElementsByTagName() ,等方式获取的集合(HTMLCollection,NodeList)等。

3,特殊写法的对象 ,如

Js代码  收藏代码

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

 

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

Js代码  收藏代码

  1. function makeArray(obj){      var rs=[],len=obj.length;      try{          rs = [].slice.call(obj,0);      }catch(e){//for IE          for(var i=0;j=obj[i++];){              rs.push(j);          }                         }      return rs;    }

 

 

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

Js代码  收藏代码

  1. //定义一个函数fun,内部使用makeArray将其arguments转换成数组  function fun(){      var ary = makeArray(arguments);      alert(ary.constructor );  }  //调用  fun(3,5);    //假设页面上有多个段落元素p  var els = document.getElementsByTagName("p");  var ary1 = makeArray(els);  alert(ary1.constructor);    //特殊的js对象(如jquery对象)  var obj={};  obj[0] = "一";  obj[1] = "二";  obj[2] = "三";  obj.length = 3;     var ary2 = makeArray(obj);  alert(ary2.constructor);

转载于:https://my.oschina.net/u/874424/blog/504515

你可能感兴趣的文章
spring-boot支持websocket
查看>>
菜鸟笔记(一) - Java常见的乱码问题
查看>>
我理想中的前端工作流
查看>>
记一次Git异常操作:将多个repository合并到同一repository的同一分支
查看>>
CodeIgniter 3.0 新手捣鼓源码(一) base_url()
查看>>
Chrome 广告屏蔽功能不影响浏览器性能
查看>>
vSphere 6将于2月2日全球同步发表
查看>>
Android状态栏实现沉浸式模式
查看>>
让你的APP实现即时聊天功能
查看>>
iOS 绝对路径和相对路径
查看>>
Codeforces 832C - Strange Radiation
查看>>
linux下使用过的命令总结(未整理完)
查看>>
STS新建MavenProject后java文件夹不出来的问题
查看>>
删除PO
查看>>
C# 获取外网IP和运营商和城市
查看>>
Springboot集成Swagger2
查看>>
stat
查看>>
报空指针异常
查看>>
如何配置mysql的超时时间
查看>>
centos 6.5环境下分布式文件系统MogileFS工作原理及分布式部署实现过程
查看>>