es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo activar la próxima iteración de una matriz si se cumple una condición – Javascript

Mis declaraciones for iteran correctamente a través de la matriz como se desea (hacia abajo en la columna y luego moviéndose 1 a la derecha). Es decir,


1 2 3
4 0 6
7 8 9


iterará como “1, 4, 7, 2, 0, 8, 3, 6, 9”. Sin embargo, necesito omitir la iteración descendente restante si el valor del índice de la iteración actual es 0. Es decir, la matriz anterior debería iterar como “1, 4, 7, 2, 3, 6, 9”. Entonces, cuando lleguemos al valor de 0, omitimos el resto y comenzamos desde la parte superior de la siguiente columna hacia la derecha. He estado probando con una declaración “if” como:


if (matrix[abajo][a través] == 0){
    a través++;
    abajo = 0;
} else {

Pero me encontré con errores comprensibles. ¿Alguna idea de cómo lograr esto?

Mi código hasta ahora:

function solution(matrix) {
    let count = 0;

    for (let a través = 0; a través < matrix[0].length; a través++) {
        for (let abajo = 0; abajo < matrix.length; abajo++) {

            console.log(matrix[abajo][a través])

        }
    }
}
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Puedes agregar una declaración condicional dentro del bucle interno para verificar si el valor actual es 0. Si es así, puedes salir del bucle interno y pasar a la siguiente columna incrementando la variable across. Aquí tienes un fragmento de código actualizado:

    function solution(matrix) {
      let count = 0;
    
      for (let across = 0; across < matrix[0].length; across++) {
        for (let down = 0; down < matrix.length; down++) {
          if (matrix[down][across] === 0) {
            // pasar a la siguiente columna
            break;
          }
    
          console.log(matrix[down][across]);
        }
      }
    }
    

    Ten en cuenta que la declaración break solo sale del bucle for interno, no del externo. Entonces, cuando se encuentra un 0, el bucle interno termina y el bucle externo continúa con la siguiente columna.

Comments are closed.