Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当您使用Array(n).fill(Array(m).fill(';&&&&';)并尝试更改1个字段时,它会更改多个字段_Javascript_Arrays - Fatal编程技术网

Javascript 当您使用Array(n).fill(Array(m).fill(';&&&&';)并尝试更改1个字段时,它会更改多个字段

Javascript 当您使用Array(n).fill(Array(m).fill(';&&&&';)并尝试更改1个字段时,它会更改多个字段,javascript,arrays,Javascript,Arrays,例如: let arr1 = Array(8).fill(Array(8).fill('_')) arr1[3][5] = 'N' console.log(arr) /* [ ["_", "_", "_", "_", "_", "N", "_", "_"], ["_", "_", &

例如:

let arr1 = Array(8).fill(Array(8).fill('_'))

arr1[3][5] = 'N'

console.log(arr) /* [
   ["_", "_", "_", "_", "_", "N", "_", "_"],
   ["_", "_", "_", "_", "_", "N", "_", "_"],
   ["_", "_", "_", "_", "_", "N", "_", "_"],
   ["_", "_", "_", "_", "_", "N", "_", "_"],
   ["_", "_", "_", "_", "_", "N", "_", "_"],
   ["_", "_", "_", "_", "_", "N", "_", "_"],
   ["_", "_", "_", "_", "_", "N", "_", "_"],
   ["_", "_", "_", "_", "_", "N", "_", "_"],
] */
我更改了1个字段,但我更改了8个字段

我最初的想法是可以的,也许我需要创建一个新的数组实例,但即使我做了同样的事情,但使用
new
如下:

let arr2 = new Array(8).fill(new Array(8).fill('_'))

arr2[3][5] = 'N'
它的作用完全相同


这完全让我困惑,有人能解释一下为什么会发生这种情况吗?

因为您正在创建一个数组,其中包含对同一个数组的多个引用。@jornsharpe但是如果它是
新数组
它不是同一个数组,对吗?哦,我想我明白了,第一个数组填充了第二个新数组的8个实例,d'oh。谢谢
newarray(8).fill(“').map(i=>newarray(8).fill(“'))
谢谢,我找到了另一个解决方法:
[…Array(8)].map(row=>newarray(8).fill(“'))
),因为你正在创建一个数组,其中包含对同一个数组的多个引用。@jornsharpe但如果它是
新数组,它不是同一个数组,对吗?哦,我想我明白了,第一个数组填充了第二个新数组的8个实例,d'oh。谢谢
新数组(8).填充(''').map(i=>新数组(8).填充('''))
谢谢,我找到了另一个解决方法:
[…数组(8)].map(行=>新数组(8).填充('''))