gpt4 book ai didi

javascript - 在 3D 数组中设置一个值会改变其他值

转载 作者:行者123 更新时间:2023-11-29 17:46:51 24 4
gpt4 key购买 nike

我正在用 0 在一行中初始化一个 2x2 3D 数组:

let matrix = new Array(2).fill(new Array(2).fill(0));

这导致

[[0,0], [0,0]]

执行 matrix[0][0] = 1 结果:

[[1, 0],[1, 0]] 

这是怎么回事?为什么两个 0-th 索引都设置为 1

最佳答案

The fill() method fills all the elements of an array from a start index to an end index with a static value.

在你的情况下 let matrix = new Array(2).fill(new Array(2).fill(0));new Array(2).fill(0 ) 被评估一次,它的引用被提供给所有外部数组。因此,每个外部数组都引用同一个内部数组。因此,修改一个值就是更新所有其他值。

您需要为每一行创建不同的新数组引用。下面的代码为每个索引创建一个新的内部数组。

let matrix = Array.from({length: 2}, _ => new Array(2).fill(0));
console.log(matrix);
matrix[0][0] = 1;
console.log(matrix);

关于javascript - 在 3D 数组中设置一个值会改变其他值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48576792/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com