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

如何用独立空数组填充多维数组?

问题原因

你的推测完全正确:Array(3).fill([]) 会将同一个空数组的引用填充到数组的每个位置。也就是说,arr[0]、arr[1]、arr[2] 指向的是内存中的同一个数组对象,所以修改其中任何一个,另外两个都会同步变化。

解决方案

以下是几种生成每个内层数组都独立的二维数组的方法:

方法1:使用 Array.from()

Array.from() 可以基于给定的长度生成新数组,第二个参数的映射函数会为每个位置返回独立的空数组:

const arr = Array.from({ length: 3 }, () => []);
arr[0].push(42);
console.log(arr); // [[42], [], []]

方法2:结合 fill() 和 map()

先通过 fill() 把稀疏数组转为包含 undefined 的数组,再用 map() 为每个位置生成新的空数组:

const arr = Array(3).fill().map(() => []);
arr[0].push(42);
console.log(arr); // [[42], [], []]

注意:直接用 Array(3).map(() => []) 不行,因为 Array(3) 创建的是稀疏数组(元素为 empty),map() 会跳过这些空元素,最终得到的还是稀疏数组。

方法3:手动循环创建

最直观的方式,通过循环逐个添加独立的空数组:

const arr = [];
for (let i = 0; i < 3; i++) {
  arr.push([]);
}
arr[0].push(42);
console.log(arr); // [[42], [], []]
验证关键

无论用哪种方法,核心都是确保每个内层数组都是新创建的独立引用,而不是复用同一个数组对象。这样修改其中一个内层数组时,其他数组不会受到影响。

内容的提问来源于stack exchange,提问作者Jeff E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:39:27