JavaScript类数组对象转换为数组对象的方法实例分析


Posted in Javascript onJuly 24, 2018

本文实例分析了JavaScript类数组对象转换为数组对象的方法。分享给大家供大家参考,具体如下:

1、类数组对象:

拥有length属性,可以通过下标访问;

不具有数组所具有的方法。

2、为什么要将类数组对象转换为数组对象?

数组对象Array有很多方法:shiftunshiftsplicesliceconcatreversesort,ES6又新增了一些方法:forEachisArrayindexOflastIndexOfeverysomemapfilterreduce等。由于类数组不具有数组所具有的操作数组的方法,将类数组转换为数组之后就能调用这些强大的方法,方便快捷。更多JavaScript数组的方法请见:https://3water.com/article/144359.htm

3、类数组对象转换为数组对象的方法:

1) Array.prototype.slice.call(arrayLike)Array.prototype.slice.call(arrayLike, 0)[].slice.call (arrayLike)[].slice.call (arrayLike, 0)

var div1 = Array.prototype.slice.call(document.querySelectorAll('div'), 0);
var div2 = Array.prototype.slice.call(document.querySelectorAll('div'));
var div3 = [].prototype.slice.call(document.querySelectorAll('div'), 0);
var div4 = [].prototype.slice.call(document.querySelectorAll('div'));

2) Array.from(arrayLike)

var divs = Array.from(document.querySelectorAll('div'));

3) 原生JavaScript转换

var length = arrayLike.length;
var arr = [];
for (var i = 0; i < length; i++) {
  arr.push(arrayLike[i]);
  return arr;
}

4、JavaScript如何判断一个对象是否为数组?

使用typeof运算符不能判断一个对象是否为数组,因为typeof arr返回的是object而不是array

1) arr instanceof Array返回true

2) arr.constructor == Array返回true

说明:使用instanceofconstructor判断数组类型的问题在于,它假定只有一个运行环境,如果网页中包含多个框架,那么实际上存在两个以上不同的全局执行环境,进而存在两个不同版本的Array构造函数,如果从一个框架向另一个框架传入一个数组,那么传入的数组与第二个框架中原生创建的数组分别具有各自不同的构造函数,也就是说,object.constructor == Array 会返回false。

原因:Array属于引用型数据,传递过程仅仅是引用地址的传递,每个页面的Array原生对象所引用的地址是不一样的,在子页面声明的Array所对应的构造函数,是子页面的Array对象,父页面进行判断时使用的Array并不等于子页面的Array。

3) Array.isArray(arr)方法返回true

ES5新增了Array.isArray()方法,这个方法的目的是:最终确定一个值是否是数组,不管它是在哪个全局环境创建的。

4) Object.prototype.toString.call(arr) === "[object Array]"返回true

这是最简单的判断一个对象是否为数组的方法。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
url地址自动加#号问题说明
Aug 21 Javascript
分享一个用Mootools写的鼠标滑过进度条改变进度值的实现代码
Dec 12 Javascript
jQuery实现id模糊查询的小例子
Mar 19 Javascript
jQuery中ajax的load()方法用法实例
Dec 26 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
Mar 02 Javascript
使用jQuery实现更改默认alert框体
Apr 13 Javascript
JavaScript程序中实现继承特性的方式总结
Jun 24 Javascript
JavaScript实现图片懒加载(Lazyload)
Nov 28 Javascript
详解vue组件化开发-vuex状态管理库
Apr 10 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 Javascript
小程序的上传文件接口的注意要点解析
Sep 17 Javascript
vue+animation实现翻页动画
Jun 29 Javascript
微信小程序实现滴滴导航tab切换效果
Jul 24 #Javascript
JavaScript引用类型Array实例分析
Jul 24 #Javascript
详解微信小程序调起键盘性能优化
Jul 24 #Javascript
原生JavaScript实现remove()和recover()功能示例
Jul 24 #Javascript
js+canvas实现验证码功能
Sep 21 #Javascript
微信小程序网络请求封装示例
Jul 24 #Javascript
js实现敏感词过滤算法及实现逻辑
Jul 24 #Javascript
You might like
php采集中国代理服务器网的方法
2015/06/16 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
javascript forEach通用循环遍历方法
2010/10/11 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
JavaScript实现点击按钮字体放大、缩小
2016/02/29 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
JS设计模式之策略模式概念与用法分析
2018/02/05 Javascript
javascript中的隐式调用
2018/02/10 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
layui从数据库中获取复选框的值并默认选中方法
2018/08/15 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
windows下安装python paramiko模块的代码
2013/02/10 Python
深入浅析Python中join 和 split详解(推荐)
2016/06/30 Python
python使用psutil模块获取系统状态
2016/08/27 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
幼儿园长自我鉴定
2013/10/17 职场文书
网络工程系信息安全技术专业大学生求职信
2013/10/22 职场文书
经管应届生求职信
2013/11/17 职场文书
精彩的推荐信范文
2013/11/26 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
单位委托书怎么写
2014/08/02 职场文书
验房委托书
2014/08/30 职场文书
公司离职证明样本
2014/09/13 职场文书
办理房产证委托书
2014/09/18 职场文书
资金申请报告范文
2015/05/14 职场文书
2015年小学体育教师工作总结
2015/10/23 职场文书
详解Laravel制作API接口
2021/05/31 PHP