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 相关文章推荐
腾讯UED 漂亮的提示信息效果代码
Sep 12 Javascript
人人网javascript面试题 可以提前实现下
Jan 05 Javascript
目前流行的JavaScript库的介绍及对比
Sep 29 Javascript
node.js中的fs.lchownSync方法使用说明
Dec 16 Javascript
JavaScript实现select添加option
Jul 03 Javascript
js实现的二分查找算法实例
Jan 21 Javascript
再谈JavaScript异步编程
Jan 27 Javascript
jquery.qtip提示信息插件用法简单实例
Jun 17 Javascript
jQuery特殊符号转义的实现
Nov 30 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
Jan 22 Javascript
微信小程序 生命周期函数详解
May 24 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
May 24 jQuery
微信小程序实现滴滴导航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各种编码集详解和以及在什么情况下进行使用
2011/09/11 PHP
PHP读取大文件的类SplFileObject使用介绍
2014/04/09 PHP
PHP分页类集锦
2014/11/18 PHP
php搜索文件程序分享
2015/10/30 PHP
Yii2中简单的场景使用介绍
2017/06/02 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
Cookie 小记
2010/04/01 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
js实现的动画导航菜单效果代码
2015/09/10 Javascript
VueJs与ReactJS和AngularJS的异同点
2016/12/12 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
js数组去重的N种方法(小结)
2018/06/07 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
JS原生带缩略图的图片切换效果
2018/10/10 Javascript
vue.js高德地图实现热点图代码实例
2019/04/18 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python网络编程之数据传输UDP实例分析
2015/05/20 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
在IPython中进行Python程序执行时间的测量方法
2018/11/01 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
2019/06/14 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
2019/07/22 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
2020/08/28 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
《夹竹桃》教学反思
2014/04/20 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL
MySql中的json_extract函数处理json字段详情
2022/06/05 MySQL