Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

145
Views
Problema al hacer un bucle de matriz 2D javascript

Estoy probando algo verdaderamente fácil que es hacer un bucle dentro de una matriz 2D y crear otra matriz al verificar fila por fila.

Por ejemplo, mi matriz 2D contiene los colores hexadecimales de un rango de celdas de una hoja de cálculo de Google. Quiero verificar cada línea y verificar si la identificación del elemento es roja o naranja.

Aquí está mi código de muestra:

 var 2Darray = [ [ '#ff0000', '#000000', '#000000' ], [ '#000000', '#ff6d01', '#000000' ], [ '#000000', '#000000', '#000000' ] ] var redHex = "#ff0000"; var orangeHex = "#ff6d01"; var newColors = []; for (var i = 0; i < rangeColor.length; i++) { var keepGoing = true; for (var j = 0; j < rangeColor[i].length; j++) { switch (rangeColor[i][j]) { case redHex: newColors[i] = redHex; console.log("1") keepGoing = false; break; case orangeHex: newColors[i] = orangeHex; console.log("2"); keepGoing = false; break; case "#000000": newColors[i] = "#000000"; console.log("3") keepGoing = false; break; } if (!keepGoing) { break; } } } console.log(newColors);

Mi nueva matriz debería ser: [ '#ff0000', '#ff6d01', '#000000' ] pero es [ '#ff0000', '#000000', '#000000' ] lo que indica que hay un problema con mi ciclo pero no puedo entender qué. ¿Quizás el comportamiento de ruptura con doble for loop?

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Aunque no estoy seguro de poder entender correctamente su secuencia de comandos, si 2Darray es rangeColor , en su secuencia de comandos, ¿qué tal si keepGoing = false; en case "#000000": como sigue?

Porque cuando se verifica el segundo elemento de la matriz, solo se verifica el primer elemento porque keepGoing = false; en el case "#000000": . Si 2Darray es rangeColor , pensé que este podría ser el motivo de su problema.

Y, en tu script, pensé que var newColors = []; se requiere agregar.

Cuando se modifica su secuencia de comandos, ¿qué tal la siguiente modificación?

Guión modificado:

 var newColors = []; var rangeColor = [ [ '#ff0000', '#000000', '#000000' ], [ '#000000', '#ff6d01', '#000000' ], [ '#000000', '#000000', '#000000' ] ]; var redHex = "#ff0000"; var orangeHex = "#ff6d01"; for (var i = 0; i < rangeColor.length; i++) { var keepGoing = true; for (var j = 0; j < rangeColor[i].length; j++) { switch (rangeColor[i][j]) { case redHex: newColors[i] = redHex; console.log("1") keepGoing = false; break; case orangeHex: newColors[i] = orangeHex; console.log("2"); keepGoing = false; break; case "#000000": newColors[i] = "#000000"; console.log("3") // keepGoing = false; // Removed break; } if (!keepGoing) { break; } } } console.log(newColors);

Como otro método, ¿qué tal el siguiente script de muestra?

Guión de muestra:

 var rangeColor = [ ['#ff0000', '#000000', '#000000'], ['#000000', '#ff6d01', '#000000'], ['#000000', '#000000', '#000000'] ]; var redHex = "#ff0000"; var orangeHex = "#ff6d01"; var newColors = rangeColor.map(r => r.includes(redHex) ? redHex : r.includes(orangeHex) ? orangeHex : '#000000'); console.log(newColors) // ==> [ '#ff0000', '#ff6d01', '#000000' ]

Referencias:

  • incluye()
  • mapa()
about 4 years ago · Juan Pablo Isaza Report

0

Estoy considerando un error tipográfico en su pregunta de que 2Darray = rangeColor.

Es porque estás rompiendo tu ciclo interno en la primera iteración cada vez. Y por lo tanto, su respuesta es el primer elemento de cada fila.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!