Ejercicio resuelto: semáforo con JavaScript

Publicado por parzibyte en

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.

Semáforo con JavaScript

La función es sencilla y se puede resolver usando if. Veamos la definición de la función:

Pruébala aquí.

Son 3 if que regresan el color dependiendo del actual.

Esta solución tiene alternativas; por ejemplo, usando el operador ternario o switch.

Otra versión usando hashmap

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:

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 ifs.

Combinándolo con las funciones flecha podemos hacer una función más corta que queda así:

Pruébalo aquí.

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.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: