Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.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 为什么在i console.log matrix时会出现这三个[0][0][0][0]?_Javascript_Console.log_Nested For Loop - Fatal编程技术网

Javascript 为什么在i console.log matrix时会出现这三个[0][0][0][0]?

Javascript 为什么在i console.log matrix时会出现这三个[0][0][0][0]?,javascript,console.log,nested-for-loop,Javascript,Console.log,Nested For Loop,好的,我只想简单解释一下为什么我的控制台中有三个[0][0][0][0][0]在一个更大的数组中,而不是只有一个?我的问题可能是嵌套for循环,所以如果你们能准确地解释一下这里发生了什么,我将不胜感激 function zeroArray(m, n) { // Creates a 2-D array with m rows and n columns of zeroes let newArray = []; let row = []; for (let i = 0; i <

好的,我只想简单解释一下为什么我的控制台中有三个[0][0][0][0][0]在一个更大的数组中,而不是只有一个?我的问题可能是嵌套for循环,所以如果你们能准确地解释一下这里发生了什么,我将不胜感激

function zeroArray(m, n) {
  // Creates a 2-D array with m rows and n columns of zeroes
  let newArray = [];
  let row = [];
  for (let i = 0; i < m; i++) {
    // Adds the m-th row into newArray

    for (let j = 0; j < n; j++) {
      // Pushes n zeroes into the current row to create the columns
      row.push(0);
    }
    // Pushes the current row, which now has n zeroes in it, to the array
    newArray.push(row);
  }
  return newArray;
}

let matrix = zeroArray(3, 2);
console.log(matrix);
函数零数组(m,n){
//创建具有m行和n列零的二维数组
设newArray=[];
设row=[];
for(设i=0;i
因为您一直在使用相同的
数组。只需在每个循环上创建一个新的
数组

函数零数组(m,n){
设newArray=[];
for(设i=0;i控制台日志(矩阵)这是使用Array.from()及其内部映射回调和新数组构造函数以及
Array#fill()

函数零数组(m,n){
//创建具有m行和n列零的二维数组
返回数组.from({length:m},()=>新数组(n.fill(0))
}
设矩阵=零数组(3,2);

控制台日志(矩阵)移动let行=。。。向下一行,到循环的内部。您没有意识到的是您只有一个子数组,并且正在将同一数组的引用多次推入外部数组。尝试
matrix[0][0]=1
,会看到所有子数组都得到该值,因为它们实际上是同一数组对象的实例。嗨,我的答案如何?答案很好,但我认为OP没有从中学习到任何东西。@JorgeFuentesGonzález出于几个原因,这似乎是一个愚蠢的陈述。首先,答案是针对长期知识库,而不仅仅是针对OP。第二,即使他们不完全了解这种方法的工作原理,他们也可以阅读文档以获得更多的理解,并且通常只了解更简单的方法有助于你沿着学习曲线前进,即使你不准备立即使用它们。我只是说,至少解释一下他失败的原因,正如问题和问题的内容所要求的那样。