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 相关文章推荐
JSQL SQLProxy 的 php 版本代码
May 05 Javascript
JSChart轻量级图形报表工具(内置函数中文参考)
Oct 11 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
js获取某月的最后一天日期的简单实例
Jun 22 Javascript
js简单实现让文本框内容逐个字的显示出来
Oct 22 Javascript
jquery ajax 局部刷新小案例
Feb 08 Javascript
jquery实现人性化的有选择性禁用鼠标右键
Jun 30 Javascript
node.js不得不说的12点内容
Jul 14 Javascript
JQuery中的事件及动画用法实例
Jan 26 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
Nov 09 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
es5 类与es6中class的区别小结
Nov 09 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中计算字符串相似度的函数代码
2012/12/29 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
使用prototype.js 的时候应该特别注意的几个问题.
2007/04/12 Javascript
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
Jquery数独游戏解析(一)-页面布局
2010/11/05 Javascript
js制作简易年历完整实例
2015/01/28 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
Vue.js添加组件操作示例
2018/06/13 Javascript
vue elementui form表单验证的实现
2018/11/11 Javascript
webpack 代码分离优化快速指北
2019/05/18 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
Node.js操作MongoDB数据库实例分析
2020/01/19 Javascript
JS对象属性的检测与获取操作实例分析
2020/03/17 Javascript
Python+Redis实现布隆过滤器
2019/12/08 Python
python识别验证码图片实例详解
2020/02/17 Python
深入浅析pycharm中 Make available to all projects的含义
2020/09/15 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
2020/11/10 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
小学三八妇女节活动方案
2014/03/16 职场文书
生育关怀行动实施方案
2014/03/26 职场文书
抽奖活动主持词
2014/03/31 职场文书
《宿建德江》教学反思
2014/04/23 职场文书
企业人事任命书
2014/06/05 职场文书
学校搬迁方案
2014/06/15 职场文书
幼儿生日活动方案
2014/08/27 职场文书
技术股东合作协议书
2014/12/02 职场文书
求职信内容一般写什么?
2015/03/20 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript