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 相关文章推荐
jquery 图片预加载 自动等比例缩放插件
Dec 25 Javascript
JSON 入门指南 想了解json的朋友可以看下
Aug 26 Javascript
关于js类的定义
Jun 28 Javascript
jQuery照片伸缩效果不影响其他元素的布局
May 09 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
Mar 25 Javascript
使用AOP改善javascript代码
May 01 Javascript
js实现显示当前状态的导航效果代码
Aug 28 Javascript
javascript实现随机生成DIV背景色
Jun 20 Javascript
js判断文件格式及大小的简单实例(必看)
Oct 11 Javascript
原生JS实现圣旨卷轴展开效果
Mar 06 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
基于jstree使用AJAX请求获取数据形成树
Aug 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
php入门教程 精简版
2009/12/13 PHP
php使用多个进程同时控制文件读写示例
2014/02/28 PHP
PHP获取某个月最大天数(最后一天)的方法
2015/07/29 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
Yii2中关联查询简单用法示例
2016/08/10 PHP
php+ajax实现文件切割上传功能示例
2020/03/03 PHP
javascript 表单验证常见正则
2009/09/28 Javascript
CCPry JS类库 代码
2009/10/30 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
js获取input标签的输入值实现代码
2013/08/05 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
jquery解析xml字符串示例分享
2014/03/25 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
Bootstrap轮播图的使用和理解4
2016/12/14 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
详解小程序input框失焦事件在提交事件前的处理
2019/05/05 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
[04:29]【TI9采访】OG.N0tail在胜者组决赛后接受采访
2019/08/25 DOTA
Python通过poll实现异步IO的方法
2015/06/04 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
详解Selenium+PhantomJS+python简单实现爬虫的功能
2019/07/14 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
学生自我评价范文
2014/02/02 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
经理任命书模板
2014/06/06 职场文书
销售目标责任书
2014/07/23 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
党员作风建设整改方案
2014/10/27 职场文书
2015年暑期见闻
2015/07/14 职场文书
分享五个Node.js开发的优秀实践 
2022/04/07 NodeJs
JS前端可扩展的低代码UI框架Sunmao使用详解
2022/07/23 Javascript