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

你可能感兴趣的文章
Plotly-Dash 存在未知问题并创建“加载依赖项时出错“;通过使用 Python-pandas.date_range
查看>>
Plotly-Dash:如何过滤具有多个数据框列的仪表板?
查看>>
Plotly:如何为 x 轴上的时间序列设置主要刻度线/网格线的值?
查看>>
Plotly:如何从 x 轴删除空日期?
查看>>
Plotly:如何从单条迹线制作堆积条形图?
查看>>
Plotly:如何以 Root 样式绘制直方图,仅显示直方图的轮廓?
查看>>
Plotly:如何使用 Plotly Express 组合散点图和线图?
查看>>
Plotly:如何使用 plotly.graph_objects 和 plotly.express 定义图形中的颜色?
查看>>
Plotly:如何使用 Python 对绘图对象条形图进行颜色编码?
查看>>
Plotly:如何使用 updatemenus 更新一个特定的跟踪?
查看>>
Plotly:如何使用长格式或宽格式的 pandas 数据框制作线图?
查看>>
Plotly:如何向烛台图添加交易量
查看>>
Plotly:如何在 plotly express 中找到趋势线的系数?
查看>>
Plotly:如何在桑基图中设置节点位置?
查看>>
Plotly:如何处理重叠的颜色条和图例?
查看>>
Plotly:如何手动设置 plotly express 散点图中点的颜色?
查看>>
Plotly:如何结合 make_subplots() 和 ff.create_distplot()?
查看>>
Plotly:如何绘制累积的“步骤“;直方图?
查看>>
Quartz进一步学习与使用
查看>>
Plotly条形图-根据正/负值更改颜色-python
查看>>