Quiero usar un caso de cambio en una matriz que tiene un número incierto de elementos, por lo que debe haber un caso para cada valor de esta matriz; algo como esto:
let cities = ["City A", "City B", "City C"]; switch (cities){ case cities[0]: //Action break; case cities[1]: //Action break; case cities[2]: //Action break; }Pero no se puede escribir manualmente, tiene que funcionar como un "para"; algo como esto:
switch (cities){ for(let i = 0; i < cities.length; i++){ case cities[i]: //Action break; } }Pero JavaScript no me permite hacer esto.
Necesita más contexto, pero si lo entiendo correctamente, hay una forma clásica de manejar casos como este.
Es mejor crear un mapeo.
const map = { "City A": () => { // action }, "City B": () => { // action }, "City C": () => { // action } }; const city = 'City A'; map[city]();No puedes definir eso, y también si pudieras, ¿qué pondrías dentro de esa caja de interruptores? Si puede generalizarlo, no necesita cambiar de caso, si cada acción es específica para cada elemento, entonces no puede usar for. Lo que puede hacer es almacenar la acción como miembro del mapa y llamarla según los datos:
const map = { "City A": { action: () => { // action specific to City A } } "City B": { action: () => { // action specific to City B } }, "City C": { action: () => { // action specific to City C } } };Entonces podrías llamarlo dinámicamente:
map['City A'].action();