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 用记忆函数快速计算递归函数
Mar 15 Javascript
纯JavaScript实现的完美渐变弹出层效果代码
Apr 02 Javascript
js 获取radio按钮值的实例
Aug 17 Javascript
javascript跨域的4种方法和原理详解
Apr 08 Javascript
javascript实现不同颜色Tab标签切换效果
Apr 27 Javascript
js实现点击按钮弹出上传文件的窗口
Dec 23 Javascript
js模仿微信朋友圈计算时间显示几天/几小时/几分钟/几秒之前
Apr 27 Javascript
JS实现电商放大镜效果
Aug 24 Javascript
JS实现登录页密码的显示和隐藏功能
Dec 06 Javascript
微信小程序基于本地缓存实现点赞功能的方法
Dec 18 Javascript
Layui多选只有最后一个值的解决方法
Sep 02 Javascript
利用 JavaScript 实现并发控制的示例代码
Dec 31 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
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
php连接函数implode与分割explode的深入解析
2013/06/26 PHP
laravel5使用freetds连接sql server的方法
2018/12/07 PHP
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
javascript简易缓动插件(源码打包)
2012/02/16 Javascript
nodejs的require模块(文件模块/核心模块)及路径介绍
2013/01/14 NodeJs
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
JS交换变量的方法
2015/01/21 Javascript
js实现卡片式项目管理界面UI设计效果
2015/12/08 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
利用angular.copy取消变量的双向绑定与解析
2016/11/25 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
Bootstrap实现渐变顶部固定自适应导航栏
2020/08/27 Javascript
Node.JS中事件轮询(Event Loop)的解析
2017/02/25 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
详解vue-cli 2.0配置文件(小结)
2019/01/14 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
小程序实现日历左右滑动效果
2019/10/21 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
Python中的filter()函数的用法
2015/04/27 Python
详解python单例模式与metaclass
2016/01/15 Python
Python多线程中阻塞(join)与锁(Lock)使用误区解析
2018/04/27 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
印度尼西亚在线时尚购物网站:ZALORA印尼
2016/08/02 全球购物
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
一个J2EE项目团队的主要人员组成是什么
2012/06/04 面试题
计算机应用与科学个人的自我评价
2013/11/15 职场文书
企业给企业的表扬信
2014/01/13 职场文书
社区端午节活动方案
2014/01/28 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
水浒传读书笔记
2015/06/25 职场文书
小学记事作文之200字
2019/08/06 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
SQL Server Agent 服务无法启动
2022/04/20 SQL Server