Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

129
Visualizações
Bucle de matriz 2D con un comportamiento extraño (FCC)

Estoy haciendo un ejercicio de aprendizaje y estoy tratando de entender el siguiente código. Pensé que tenía un manejo de matrices y bucles, pero este me tiene muy confundido.

El siguiente código:

 function zeroArray(m, n) { let newArray = []; let row = []; for (let i = 0; i < m; i++) { for (let j = 0; j < n; j++) { row.push(0); } newArray.push(row); } return newArray; } let matrix = zeroArray(3, 2); console.log(matrix);

Devoluciones

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

Sin embargo, hubiera esperado que volviera.

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

Dado que en cada ciclo i, estamos presionando (0) a la fila [] dos veces, antes de presionar la fila [] en newArray.

Sin embargo, esto no está sucediendo, y en mi depurador VSCode parece que en cada ciclo i, cada índice existente de newArray se actualiza con la última versión de la matriz fila[].

¿Por qué es esto?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Debe hacer una copia de la matriz cuando presione newArray :

 function zeroArray(m, n) { let newArray = []; let row = []; for (let i = 0; i < m; i++) { for (let j = 0; j < n; j++) { row.push(0); } newArray.push(row.slice()); } return newArray; } let matrix = zeroArray(3, 2); console.log(JSON.stringify(matrix));

about 4 years ago · Juan Pablo Isaza Relatório

0

1) Comience el bucle exterior con i = 1 hasta i <= m , por lo que el número de bucles será m

 for (let i = 1; i <= m; i++) {

2) Debe crear una nueva row cada vez que comience el ciclo interno y empujar la row a newArray después de que finalice el ciclo interno

3) Establecer la condición del bucle interno como j < n * i

 for (let j = 0; j < n * i; j++) { 

 function zeroArray(m, n) { let newArray = []; // const row = [] // (-) for (let i = 1; i <= m; i++) { const row = []; // (+) for (let j = 0; j < n * i; j++) { // (+) row.push(0); } newArray.push(row); } return newArray; } let matrix = zeroArray(3, 2); console.log(matrix);
 /* This is not a part of answer. It is just to give the output fill height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

La matriz m x n debe ser m filas y n columnas. Así que para 3, 2 esperas

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

Simplemente declare la row dentro del primer ciclo:

 function zeroArray(m, n) { const newArray = []; for (let i = 0; i < m; i++) { const row = []; for (let j = 0; j < n; j++) { row.push(0); } newArray.push(row); } return newArray; } let matrix = zeroArray(3, 2); console.log(matrix);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda