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学习笔记-详解in运算符
Sep 13 Javascript
电子商务网站上的常用的js放大镜效果
Dec 08 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
Jan 28 Javascript
原生JS和jQuery版实现文件上传功能
Apr 18 Javascript
bootstrap table复杂操作代码
Nov 01 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
详解微信小程序开发之下拉刷新 上拉加载
Nov 24 Javascript
jQuery Ajax实现跨域请求
Jan 21 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
Windows下支持自动更新的Electron应用脚手架的方法
Dec 24 Javascript
详解微信UnionID作用
May 15 Javascript
如何使用原生Js实现随机点名详解
Jan 06 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学习之PHP表达式
2006/10/09 PHP
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
2020/02/11 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
JavaScript高级程序设计
2006/12/29 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
2013/04/02 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
2016/05/20 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
JS 仿支付宝input文本输入框放大组件的实例
2017/11/14 Javascript
JavaScript实现求最大公共子串的方法
2018/02/03 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
javascript获取元素的计算样式
2019/05/24 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
用Python编写一个国际象棋AI程序
2014/11/28 Python
django框架面向对象ORM模型继承用法实例分析
2019/07/29 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
python如何从键盘获取输入实例
2020/06/18 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
物流管理专业职业生涯规划书
2014/01/06 职场文书
合伙开公司协议书范本
2014/10/28 职场文书
龙潭大峡谷导游词
2015/02/10 职场文书
护理专业自荐信范文
2015/03/06 职场文书
幸福终点站观后感
2015/06/04 职场文书
同学聚会开幕词
2019/04/02 职场文书
python 如何用map()函数创建多线程任务
2021/04/07 Python
SpringBoot生成License的实现示例
2021/06/16 Java/Android