Quiero hacer un bucle en la matriz y asignar colores en un orden específico a cada elemento de la matriz.
Primero, cincuenta, noveno y así sucesivamente deben tener color rojo .
Segundo, sexto, décimo y así sucesivamente deben tener color verde .
Tercero, Séptimo, Undécimo y así sucesivamente deben tener color azul .
Cuarto, octavo, duodécimo y así sucesivamente deben tener color amarillo .
const colors = ['red', 'green', 'blue', 'yellow']; const arr = [1, 'a', 3, 'b', 55, 69, 71, 8, 91, 10]; let color; arr.forEach((el, i) => { switch (i) { case i % 1: color = 'red'; break; case i % 2: color = 'green'; break; case i % 3: color = 'blue'; break; case i % 4: color = 'yellow'; break; default: color = 'red'; break; } console.log('color:', el, i, color); });Probablemente puedas evitar el cambio de esta manera:
const colors = ["red", "green", "blue", "yellow"]; const arr = [1, "a", 3, "b", 55, 69, 71, 8, 91, 10]; let color; arr.forEach((el, i) => { color = colors[i % colors.length]; console.log("color:", el, i, color); }); i % colors.length te da el índice de color
Consejo: puede agregar más colores a su matriz y seguirá funcionando
Necesitas hacer un par de cambios. switch(i) debe ser switch ((i + 1) % 4) , para que active la expresión evaluada de index + 1 mod 4 (más 1 para que no modifique 0 , que es el primer índice y para que obtenga resultados utilizables). Además, sus casos deben ser case 1: , case 2: , etc. Eche un vistazo a continuación:
const colors = ['red', 'green', 'blue', 'yellow']; const arr = [1, 'a', 3, 'b', 55, 69, 71, 8, 91, 10]; let color; arr.forEach((el, i) => { switch ((i + 1) % 4) { case 1: color = 'red'; break; case 2: color = 'green'; break; case 3: color = 'blue'; break; case 0: color = 'yellow'; break; default: color = 'red'; break; } console.log('color:', el, i, color); });