Objeto en lugar de swtich
Problema:
Para switch muy largos se puede cambiar por un objeto
Los switch..case se usan cuando existen sentencias formadas con if..else anidadas muy complejas.
Pero en algunos casos los switch también se pueden sustituir por objetos.
Solución
Usar un objeto cuyas propiedades sean los valores de los case del switch
En la estructura switch..case los valores en los case determinan la acción a realizar. Estos valores podemos usarlos como propiedades (o métodos) en un objeto, la acción del case se usa como valor de estas propiedades o métodos.
El ejemplo te aclarará como funciona esto
Ejemplo
Una sentencia swtich ... case podría ser tan simple como esto
switch persona{
case 'Juan':
alert('Soy Juan');
break;
case 'Ana':
alert('Soy Ana');
break;
case 'Pedro':
alert('Soy Pedro');
break;
defaul:
alert("Desconocido");
}
pero podemos ponerla en forma de objeto:
let quien = "Pedro";
let persona ={
Juan: ()=>alert('Soy Juan');
Ana: ()=>alert('Soy Ana');
Pedro: ()=>alert('Soy Pedro');
}
persona.Juan(); //alert con Soy Juan
persona[quien](); //alert con Soy Pedro
if (persona.Luis === undefined)
alert("desconocido")