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 相关文章推荐
用javascript实现给出的盒子的序列是否可连为一矩型
Aug 30 Javascript
jquery trim() 功能源代码
Feb 14 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
Feb 26 Javascript
javascript 获取元素样式必杀技
May 04 Javascript
JavaScript动态添加列的方法
Mar 25 Javascript
利用jQuery中的ajax分页实现代码
Feb 25 Javascript
jQuery中on绑定事件后引发的事件冒泡问题如何解决
May 25 Javascript
jQuery实现table中的tr上下移动并保持序号不变的实例代码
Jul 11 Javascript
ES6新数据结构Map功能与用法示例
Mar 31 Javascript
原生JS实现自定义下拉单选选择框功能
Oct 12 Javascript
ES6数组与对象的解构赋值详解
Jun 14 Javascript
vue中created和mounted的区别浅析
Aug 13 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获取类中常量,属性,及方法列表的方法
2009/04/09 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
js函数在frame中的相互调用详解
2014/03/03 Javascript
详谈JavaScript内存泄漏
2014/11/14 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
nodeJS实现路由功能实例代码
2017/06/08 NodeJs
AngularJS实用基础知识_入门必备篇(推荐)
2017/07/10 Javascript
纯js实现页面返回顶部的动画(超简单)
2017/08/10 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
vue组件定义,全局、局部组件,配合模板及动态组件功能示例
2019/03/19 Javascript
vue eslint简要配置教程详解
2019/07/26 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
[49:05]Newbee vs TNC 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
Python Matplotlib实现三维数据的散点图绘制
2019/03/19 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
2020/03/13 Python
通过实例简单了解Python sys.argv[]使用方法
2020/08/04 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
优秀少先队辅导员先进事迹材料
2014/05/18 职场文书
售后客服工作职责
2014/06/16 职场文书
大学生创业计划书
2014/08/14 职场文书
JavaScript实现简单计时器
2021/06/22 Javascript
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
python开发人人对战的五子棋小游戏
2022/05/02 Python