En este post veremos la solución a un ejercicio sencillo de JavaScript. Se trata de crear una función que regrese “amarillo”, “rojo”, o “verde” dependiendo del argumento que reciba indicando la luz encendida actualmente.
La función va a indicar cuál es la luz que debería encender de acuerdo a la que está encendida actualmente.
Si la luz es “rojo” entonces debe mostrar “verde”, si es “verde” debe mostrar “amarillo” y finalmente si es “amarillo” debe mostrar “rojo”.
Por cierto, este es un ejercicio de Codewars.
La función es sencilla y se puede resolver usando if. Veamos la definición de la función:
const actualizarSemaforo = (colorActual) => {
if (colorActual === "amarillo") return "rojo";
if (colorActual === "rojo") return "verde";
if (colorActual === "verde") return "amarillo";
}
// Probar
const colores = [
"amarillo", "rojo", "verde"
];
colores.forEach(color => {
console.log(`Para ${color} la siguiente luz debe ser: ${actualizarSemaforo(color)}`)
});
Son 3 if que regresan el color dependiendo del actual.
Esta solución tiene alternativas; por ejemplo, usando el operador ternario o switch.
En estructura de datos un hashmap es un diccionario que tiene claves y valores. Al consultar una clave, regresa el valor asociado con esa clave.
Un hashmap o diccionario en JavaScript es un simple objeto. Como la luz actual cambia únicamente a un valor podemos definir un diccionario:
const diccionario = {
verde: "amarillo",
amarillo: "rojo",
rojo: "verde",
};
Cada valor tiene su equivalente. Si accedemos a diccionario["amarillo"]
devolverá "rojo"
y lo mismo para otros valores, así que basta con regresar diccionario[valor] y nos ahorramos if
s.
Combinándolo con las funciones flecha podemos hacer una función más corta que queda así:
const actualizarSemaforo = colorActual => ({
verde: "amarillo",
amarillo: "rojo",
rojo: "verde",
}[colorActual])
// Probar
const colores = [
"amarillo", "rojo", "verde"
];
colores.forEach(color => {
console.log(`Para ${color} la siguiente luz debe ser: ${actualizarSemaforo(color)}`)
});
Los hashmap sirven para muchas cosas más, y son extremadamente rápidos, pues su tiempo de acceso es constante y no necesitamos andar buscando la clave, eso sí, debemos programar de tal manera que se pueda saber la clave de lo que necesitamos.
El día de hoy vamos a ver cómo restablecer la impresora térmica GOOJPRT PT-210 a…
Hoy voy a enseñarte cómo imprimir en una impresora térmica conectada por USB a una…
En este post voy a enseñarte a programar un servidor web en Android asegurándonos de…
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta web usa cookies.