Supongamos que queremos preguntar al usuario por un valor y evaluar una condición… Pero la condición se cumple con más de un valor distinto. Por ejemplo:
let consola_preferida = prompt("¿Cuál es tu consola preferida?");
//Convertimos todo a minúscula para no tener problemas de case sensitive.
consola_preferida = consola_preferida.toLocaleLowerCase();
let mensaje;
if(consola_preferida === "xbox"){
mensaje = "Tu consola preferida es: xbox";
}else if(consola_preferida === "playstation"){
mensaje = "Tu consola preferida es: playstation";
}else if(consola_preferida === "nintendo"){
mensaje = "Tu consola preferida es: nintendo";
}else if(consola_preferida === "pc"){
mensaje = "Tu consola preferida es: pc";
}else{
mensaje = "El valor ingresado es incorrecto";
}
alert(mensaje);
(Ya sé que PC no es consola, no te enojes)
Como podemos ver existen varias posibilidades. El problema es que aunque el código es válido, tenemos demasiadas líneas, demasiadas condiciones.
Una alternativa a esto, y teniendo en cuenta que todas las condiciones siempre harán lo mismo, es separarlas con un operador or:
let consola_preferida = prompt("¿Cuál es tu consola preferida?");
//Convertimos todo a minúscula para no tener problemas de case sensitive.
consola_preferida = consola_preferida.toLocaleLowerCase();
let mensaje;
if(consola_preferida === "xbox" || consola_preferida === "playstation" || consola_preferida === "nintendo" || consola_preferida === "pc"){
mensaje = `Tu consola preferida es: ${consola_preferida}`;
}else{
mensaje = "El valor ingresado es incorrecto";
}
alert(mensaje);
El problema es que si la lista de elementos es mucho más grande, deberíamos agregar un «||» por cada uno de ellos, algo que puede ser confuso y tedioso de mantener en el tiempo.
Una solución para esto es el método includes(). Este puede usarse en los arrays, recibe un valor como argumento y de existir dentro de la lista devuelve true, sino false:
let consola_preferida = prompt("¿Cuál es tu consola preferida?");
//Convertimos todo a minúscula para no tener problemas de case sensitive.
consola_preferida = consola_preferida.toLocaleLowerCase();
let mensaje;
//Agregamos una lista de las consolas que van a entrar en la condición
let consolas_validas = ["xbox", "playstation", "nintendo", "pc"]
if( consolas_validas.includes(consola_preferida) ){
mensaje = `Tu consola preferida es: ${consola_preferida}`;
}else{
mensaje = "El valor ingresado es incorrecto";
}
alert(mensaje);
Lo que lo hace bastante conveniente, teniendo en cuenta si tuviésemos que agregar muchos más valores posibles en un futuro.