博客
关于我
js 伪数组
阅读量:778 次
发布时间:2019-03-24

本文共 1531 字,大约阅读时间需要 5 分钟。

伪数组的定义

伪数组(类数组)类似于数组,具有索引和length属性,但不具备数组方法(如push、shift、map等)。这种对象被称为伪数组,因为它虽然看起来像数组,但实际上并不是原生数组。

伪数组的范例

伪数组可以通过以下形式创建: ```javascript let fakeArray = { length: 3, "0": "first", "1": "second", "2": "third" }; ``` 此外,以下类型的对象也被视为伪数组: ```javascript var obj3 = { length: 0 }; var obj4 = { 0: '888', length: 1 }; var obj5 = { 99: 'abc', length: 100 }; ```

伪数组的特点

1. 伪数组不具备数组的特性: ```javascript fakeArray instanceof Array === false; Object.prototype.toString.call(fakeArray) === "[object Object]"; Array.isArray(fakeArray) === false; ```2. 伪数组不一定有连续的索引: ```javascript let arr = [1,2,3,4,6]; arr instanceof Array === true; Object.prototype.toString.call(arr) === "[object Array]"; Array.isArray(arr) === true; ```

伪数组的常见应用

伪数组常见于以下场景: 1. 函数参数列表: ```javascript function test(data, ...args) { ... } ```2. DOM 对象列表: ```javascript let divElements = document.getElementsByTagName('div'); ```

如何判断是否为伪数组

可以使用以下方法进行判断: ```javascript // 通过 lodash的_.isArrayLike方法 _.isArrayLike([1, 2, 3]); // => true _.isArrayLike(document.body.children); // => true _.isArrayLike('abc'); // => true _.isArrayLike(_.noop); // => false ```

伪数组与真数组的转换

若需要将伪数组转换为真数组,可以使用以下方法: 1. **方式一:使用 ES6 Array.from()** ```javascript let realArr = Array.from(fakeArr); ```2. **方式二:使用 Array.prototype.slice.call()** ```javascript let realArr = Array.prototype.slice.call(fakeArr); ```3. **方式三:手动创建数组** ```javascript let realArr = []; for (let i = 0; i < fakeArray.length; i++) { realArr.push(fakeArray[i]); } ```

总结

伪数组与真数组在特性上的主要区别在于是否是原生数组类型。通过上述方法,我们可以轻松地将伪数组转换为真数组,从而更好地进行数组操作。

转载地址:http://qrmkk.baihongyu.com/

你可能感兴趣的文章
OpenCV:不规则形状区域中每种颜色的像素数?
查看>>
OpenCV:概念、历史、应用场景示例、核心模块、安装配置
查看>>
OpenDaylight融合OpenStack架构分析
查看>>
OpenERP ORM 对象方法列表
查看>>
openEuler Summit 2022 成功举行,开启全场景创新新时代
查看>>
openEuler 正式开放:推动计算多样化时代的到来
查看>>
OpenEuler23.03欧拉系统_安装瀚高数据库企业版6.0.4_openeuler切换root用户_su:拒绝权限_passwd: 鉴定令牌操作错误---国产瀚高数据库工作笔记001
查看>>
OpenEuler23.03欧拉系统_安装瀚高数据库企业版6.0.4_踩坑_安装以后系统无法联网_启动ens33网卡---国产瀚高数据库工作笔记002
查看>>
OpenFeign 入门与实战
查看>>
OpenFeign源码学习
查看>>
OpenFeign的使用方式成功解锁
查看>>
OpenFeign组件声明式服务调用
查看>>
openfeign远程调用不起作用解决_使用Spring Boot的spring.factories进行注入---SpringCloud Alibaba_若依微服务框架改造---工作笔记007
查看>>
openfire开发(四)消息拦截器
查看>>
openfire源码解读之将cache和session对象移入redis以提升性能
查看>>
Openfire身份认证绕过漏洞复现+利用(CVE-2023-32315)
查看>>
OpenForest 开源项目安装与使用指南
查看>>
OpenGL glBlendFunc() 设置颜色混合 透明度叠加计算
查看>>
OpenGL 中“立即模式”是什么意思?
查看>>
opengl 教程(15) 摄像机控制(2)
查看>>