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 基础问答三
Dec 03 Javascript
轻量级 JS ToolTip提示效果
Jul 20 Javascript
防止xss和sql注入:JS特殊字符过滤正则
Apr 18 Javascript
js实现鼠标拖动图片并兼容IE/FF火狐/谷歌等主流浏览器
Jun 06 Javascript
上传图片预览JS脚本 Input file图片预览的实现示例
Oct 23 Javascript
JavaScript中的toLocaleLowerCase()方法使用详解
Jun 06 Javascript
JavaScript基础之this详解
Jun 04 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
DatePickerDialog 自定义样式及使用全解
Jul 09 Javascript
云服务器部署Node.js项目的方法步骤(小白系列)
Mar 23 Javascript
vue $mount 和 el的区别说明
Sep 11 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
我的群发邮件程序
2006/10/09 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
2014/06/10 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
jQuery实现批量判断表单中文本框非空的方法(2种方法)
2015/12/09 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
全面解析DOM操作和jQuery实现选项移动操作代码分享
2016/06/07 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
2016/12/14 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
vue 项目中使用Loading组件的示例代码
2018/08/31 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
2020/12/28 Javascript
[01:09]DOTAPLUS——DOTA2的新时代
2018/04/04 DOTA
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中字符串对齐方法介绍
2015/05/21 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
基于anaconda下强大的conda命令介绍
2018/06/11 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
pycharm 2018 激活码及破解补丁激活方式
2020/09/21 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
CSS3 特效范例整理
2011/08/22 HTML / CSS
柯基袜:Corgi Socks
2017/01/26 全球购物
面向中国市场的在线海淘美妆零售网站:Beauty House美丽屋
2021/03/02 全球购物
后勤人员自我评价怎么写
2013/09/19 职场文书
个人教师自我评价范文
2013/12/02 职场文书
社区端午节活动总结
2015/02/11 职场文书
2015年市场营销工作总结
2015/07/23 职场文书
高中历史教学反思
2016/02/19 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL
Elasticsearch 配置详解
2022/04/19 Java/Android
Oracle用户管理及赋权
2022/04/24 Oracle
Python OpenGL基本配置方式
2022/05/20 Python