JavaScript如何通过孔hole示例深入理解稀疏数组?

更新于
2026-09-25 00:00:47
1阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1289个文字,预计阅读时间需要6分钟。

JavaScript如何通过孔hole示例深入理解稀疏数组?

目录+简单数组是什么+JavaScript数组天生就是简单数组+JavaScript数组简单特性带来的异常现象+slice会复制数组+forEach、every会跳过元素(不对元素调用回调函数)+map不会对元素调用回调函数,但会复制元素

目录
  • 稀疏数组是什么
    • JavaScript数组天生就是稀疏数组
  • JavaScript数组稀疏特性带来的“怪异现象”
    • slice会复制孔
    • forEach、every会跳过孔(不对孔调用回调函数)
    • map不对孔调用回调函数,但是孔会保留
    • filter不对孔调用回调函数,但是孔会被过滤掉
    • join会将孔转化为一个空字符串进行拼接,与undefined一样
    • 初始化无孔数组的方法
    • Array.apply(null, Array(n))的原理

稀疏数组是什么

在绝大多数JavaScript的实现中,数组是稀疏的,我们可以认为js的数组都是稀疏的(虽然ES标准并没有这样规定)。

稀疏数组与密集数组最大的不同,就是稀疏数组中可以有“孔”(hole)。孔是逻辑上存在于数组中,但物理上不存在与内存中的那些数组项。在那些仅有少部分项被使用的数组中,孔可以大大减少内存空间的浪费。比如,我们要表示一个长度为10000的数组,它的最后一个项是字符串'a'。

阅读全文

本文共计1289个文字,预计阅读时间需要6分钟。

JavaScript如何通过孔hole示例深入理解稀疏数组?

目录+简单数组是什么+JavaScript数组天生就是简单数组+JavaScript数组简单特性带来的异常现象+slice会复制数组+forEach、every会跳过元素(不对元素调用回调函数)+map不会对元素调用回调函数,但会复制元素

目录
  • 稀疏数组是什么
    • JavaScript数组天生就是稀疏数组
  • JavaScript数组稀疏特性带来的“怪异现象”
    • slice会复制孔
    • forEach、every会跳过孔(不对孔调用回调函数)
    • map不对孔调用回调函数,但是孔会保留
    • filter不对孔调用回调函数,但是孔会被过滤掉
    • join会将孔转化为一个空字符串进行拼接,与undefined一样
    • 初始化无孔数组的方法
    • Array.apply(null, Array(n))的原理

稀疏数组是什么

在绝大多数JavaScript的实现中,数组是稀疏的,我们可以认为js的数组都是稀疏的(虽然ES标准并没有这样规定)。

稀疏数组与密集数组最大的不同,就是稀疏数组中可以有“孔”(hole)。孔是逻辑上存在于数组中,但物理上不存在与内存中的那些数组项。在那些仅有少部分项被使用的数组中,孔可以大大减少内存空间的浪费。比如,我们要表示一个长度为10000的数组,它的最后一个项是字符串'a'。

阅读全文