如何将JavaScript稀疏数组与孔hole示例进行详细解释和对比?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1287个文字,预计阅读时间需要6分钟。
目录+简单数组是什么+JavaScript数组天生就是简单数组+JavaScript数组简单特性带来的异常现象+slice会复制数组+forEach、every会跳过元素(不对元素调用回调函数)+map不会对元素调用回调函数,但数组会
目录
- 稀疏数组是什么
- JavaScript数组天生就是稀疏数组
- JavaScript数组稀疏特性带来的“怪异现象”
- slice会复制孔
- forEach、every会跳过孔(不对孔调用回调函数)
- map不对孔调用回调函数,但是孔会保留
- filter不对孔调用回调函数,但是孔会被过滤掉
- join会将孔转化为一个空字符串进行拼接,与undefined一样
- 初始化无孔数组的方法
- Array.apply(null, Array(n))的原理
稀疏数组是什么
在绝大多数JavaScript的实现中,数组是稀疏的,我们可以认为js的数组都是稀疏的(虽然ES标准并没有这样规定)。
稀疏数组与密集数组最大的不同,就是稀疏数组中可以有“孔”(hole)。孔是逻辑上存在于数组中,但物理上不存在与内存中的那些数组项。在那些仅有少部分项被使用的数组中,孔可以大大减少内存空间的浪费。
本文共计1287个文字,预计阅读时间需要6分钟。
目录+简单数组是什么+JavaScript数组天生就是简单数组+JavaScript数组简单特性带来的异常现象+slice会复制数组+forEach、every会跳过元素(不对元素调用回调函数)+map不会对元素调用回调函数,但数组会
目录
- 稀疏数组是什么
- JavaScript数组天生就是稀疏数组
- JavaScript数组稀疏特性带来的“怪异现象”
- slice会复制孔
- forEach、every会跳过孔(不对孔调用回调函数)
- map不对孔调用回调函数,但是孔会保留
- filter不对孔调用回调函数,但是孔会被过滤掉
- join会将孔转化为一个空字符串进行拼接,与undefined一样
- 初始化无孔数组的方法
- Array.apply(null, Array(n))的原理
稀疏数组是什么
在绝大多数JavaScript的实现中,数组是稀疏的,我们可以认为js的数组都是稀疏的(虽然ES标准并没有这样规定)。
稀疏数组与密集数组最大的不同,就是稀疏数组中可以有“孔”(hole)。孔是逻辑上存在于数组中,但物理上不存在与内存中的那些数组项。在那些仅有少部分项被使用的数组中,孔可以大大减少内存空间的浪费。

