gpt4 book ai didi

javascript - 无法设置矩阵单元格值

转载 作者:行者123 更新时间:2023-11-28 14:26:43 25 4
gpt4 key购买 nike

为什么我这样做:

let matrix = Array(3).fill(new Array(3).fill(0));
matrix[0][1] = 1

我希望矩阵是:

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

但是,矩阵看起来像这样:

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

所以它设置的是整个列,而不仅仅是单元格。我觉得我在这里缺少了一个非常重要的语言部分。

提前谢谢您!

最佳答案

因为您在内存中对所有索引使用相同的引用。

想象一下这是内存,索引指向内存中的相同值,因此,特定索引的每次更改都会修改该值

    new Array(3).fill(0)     Matrix
+---------+ +-----------+
| [0,0,0] | <--+------| Index 0 |
+---------+ | +-----------+
^ +------| Index 1 |
| +-----------+
+---------------| Index 2 |
+-----------+

为每个索引创建一个新数组

    {length: 3}, () => Array(3).fill(0)     Matrix
+---------+ +-----------+
| [0,0,0] | <-----------------------| Index 0 |
+---------+ +-----------+
| [0,0,0] | <-----------------------| Index 1 |
+---------+ +-----------+
| [0,0,0] | <-----------------------| Index 2 |
+---------+ +-----------+

let matrix = Array.from({length: 3}, () => Array(3).fill(0));
matrix[0][1] = 1;

console.log(matrix);

关于javascript - 无法设置矩阵单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53018187/

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