博客
关于我
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/

你可能感兴趣的文章
MySQL5.7.37windows解压版的安装使用
查看>>
mysql5.7免费下载地址
查看>>
mysql5.7命令总结
查看>>
mysql5.7安装
查看>>
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>