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

JavaScript中如何修改多维数组元素?修改单个元素为何所有子数组都变更

问题原因

Array.prototype.fill方法接收的参数如果是引用类型,只会生成一个实例,所有填充位置都共享该实例的引用。
你编写的let array = new Array(7).fill(Array(7).fill());代码中,内层的Array(7).fill()仅会执行1次,生成1个长度为7的数组对象,外层数组的7个元素全部指向这同一个数组对象。因此你修改array[0][0]时,本质是修改这个共享的内层数组对象,所有引用该对象的位置都会同步展示修改结果。

正确实现方法

要保证每个内层数组都是独立的内存对象,避免引用共享,可以选用以下两种写法:

  • 使用Array.from生成多维数组:
let array = Array.from({length: 7}, () => new Array(7).fill());
  • 先填充外层数组空位再通过map生成独立内层数组:
let array = new Array(7).fill().map(() => new Array(7).fill());

上述两种写法中,每次生成外层数组元素时都会执行回调函数,创建全新的内层数组,互相之间不存在引用关联。修改单个元素array[0][0] = 1时,仅会修改对应内层数组的指定元素,不会影响其他数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:06:03