You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何需要解构Array(3)来生成多维数组?

为什么要解构Array(3)来生成多维数组?

先看两段代码的执行差异:

成功生成多维数组的写法:

[...Array(3)].map(_=>Array(5).fill(0))       
/* 输出结果:
(3) [Array(5), Array(5), Array(5)]
0 : (5) [0, 0, 0, 0, 0]
1 : (5) [0, 0, 0, 0, 0]
2 : (5) [0, 0, 0, 0, 0]
length: 3
*/

直接调用map失败的写法:

Array(3).map(_=>Array(5).fill(0))       
// 输出结果:(3) [empty × 3]

核心原因

  • Array(3) 创建的是稀疏数组:它仅设置数组的length为3,但未填充任何实际元素,三个位置都是空槽(empty)。
  • map 方法会跳过稀疏数组的空槽:它只遍历数组中存在实际值的元素,直接调用Array(3).map时,回调函数根本不会执行,最终返回原稀疏数组结构。
  • 扩展运算符[...Array(3)]将稀疏数组转为密集数组:解构过程会遍历每个位置,把空槽替换为undefined,数组拥有三个实际存在的元素后,map方法的回调函数会执行三次,从而生成预期的多维数组。

内容的提问来源于stack exchange,提问作者Akshay Vijay Jain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 17:50:35