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 表格操作(交替显示、拖动表格行、选择行等)
Jul 29 Javascript
JavaScript中Object和Function的关系小结
Sep 26 Javascript
运算符&amp;&amp;的三个不同层次
Apr 07 Javascript
javaScript如何处理从java后台返回的list
Apr 24 Javascript
JavaScript日期时间与时间戳的转换函数分享
Jan 31 Javascript
javascript每日必学之基础入门
Feb 16 Javascript
javascript url几种编码方式详解
Jun 06 Javascript
jQuery+ajax实现滚动到页面底部自动加载图文列表效果(类似图片懒加载)
Jun 07 Javascript
Ztree新增角色和编辑角色回显问题的解决
Oct 25 Javascript
JS实现的ajax和同源策略(实例讲解)
Dec 01 Javascript
vue实现选项卡及选项卡切换效果
Apr 24 Javascript
详解vue中axios的封装
Jul 18 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
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
基于MySQL体系结构的分析
2013/05/02 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
PHP 将数组打乱 shuffle函数的用法及简单实例
2016/06/17 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
PHP常用函数之获取汉字首字母功能示例
2019/10/21 PHP
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
2012/06/14 Javascript
EasyUI 中 MenuButton 的使用方法
2012/07/14 Javascript
jquery实现带复选框的表格行选中删除时高亮显示
2013/08/01 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
JavaScript小技巧整理
2015/12/30 Javascript
JS实现简单的二维矩阵乘积运算
2016/01/26 Javascript
JavaScript实现滑动导航栏效果
2017/08/30 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
vue移动端实现红包雨效果
2020/06/23 Javascript
浅谈webpack4.x 入门(一篇足矣)
2018/09/05 Javascript
20多个小事例带你重温ES10新特性(小结)
2019/09/29 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
JS数据类型(基本数据类型、引用数据类型)及堆和栈的区别分析
2020/03/04 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
[01:33]PWL开团时刻DAY2-开雾与反开雾
2020/10/31 DOTA
[47:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第二场 3月4日
2021/03/11 DOTA
scrapy-redis源码分析之发送POST请求详解
2019/05/15 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
Python 线程池用法简单示例
2019/10/02 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
Proenza Schouler官方网站:纽约女装和配饰品牌
2019/01/03 全球购物
斯洛伐克香水和化妆品购物网站:Parfemy-Elnino.sk
2020/01/28 全球购物
物流仓管员岗位职责
2013/12/04 职场文书
高中生期末评语大全
2014/01/28 职场文书
初中毕业生自我评价
2015/03/02 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript