Javascript 为什么在i console.log matrix时会出现这三个[0][0][0][0]?
好的,我只想简单解释一下为什么我的控制台中有三个[0][0][0][0][0]在一个更大的数组中,而不是只有一个?我的问题可能是嵌套for循环,所以如果你们能准确地解释一下这里发生了什么,我将不胜感激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 <
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。第二,即使他们不完全了解这种方法的工作原理,他们也可以阅读文档以获得更多的理解,并且通常只了解更简单的方法有助于你沿着学习曲线前进,即使你不准备立即使用它们。我只是说,至少解释一下他失败的原因,正如问题和问题的内容所要求的那样。