博客
关于我
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图像分割3-分水岭方法
查看>>
opencv图像切割1-KMeans方法
查看>>
OpenCV图像处理篇之阈值操作函数
查看>>
opencv图像特征融合-seamlessClone
查看>>
OpenCV图像的深浅拷贝
查看>>
OpenCV在Google Colboratory中不起作用
查看>>
OpenCV学习(13) 细化算法(1)(转)
查看>>
OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
查看>>
OpenCV学堂 | CV开发者必须懂的9种距离度量方法,内含欧氏距离、切比雪夫距离等(建议收藏)
查看>>
OpenCV学堂 | OpenCV中支持的人脸检测方法整理与汇总
查看>>
OpenCV学堂 | OpenCV案例 | 基于轮廓分析对象提取
查看>>
OpenCV学堂 | YOLOv8与YOLO11自定义数据集迁移学习效果对比
查看>>
OpenCV学堂 | YOLOv8官方团队宣布YOLOv11 发布了
查看>>
OpenCV学堂 | YOLOv8实战 | 荧光显微镜细胞图像检测
查看>>
OpenCV学堂 | 汇总 | 深度学习图像去模糊技术与模型
查看>>
OpenCV安装
查看>>
OpenCV官方文档 理解k - means聚类
查看>>
opencv实现多路播放
查看>>
opencv常用函数
查看>>
OpenCV探索
查看>>