Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

125
Vistas
Javascript IF/ELSE - Función de acortamiento

Estoy jugando con JavaScript IF/ELSE para entender mejor cómo funciona. Como ejercicio tomé el siguiente horario de trabajo de una tienda:

  • 6AM a 6PM = Abierto
  • 6 p. m. a 6 a. m. = cerrado

luego creé una función que devuelve la palabra 'Abierto' o 'Cerrado' en función de los 2 valores "tiempo" y "período".

 function shopHours(time,period) { if (time === 6 && period === 'AM') { return 'Open'; } else if (time === 6 && period === 'AM') { return 'Open'; } else if (time === 7 && period === 'AM') { return 'Open'; } else if (time === 8 && period === 'AM') { return 'Open'; } else if (time === 9 && period === 'AM') { return 'Open'; } else if (time === 10 && period === 'AM') { return 'Open'; } else if (time === 11 && period === 'AM') { return 'Open'; } else if (time === 12 && period === 'PM') { return 'Open'; } else if (time === 1 && period === 'PM') { return 'Open'; } else if (time === 2 && period === 'PM') { return 'Open'; } else if (time === 3 && period === 'PM') { return 'Open'; } else if (time === 4 && period === 'PM') { return 'Open'; } else if (time === 5 && period === 'PM') { return 'Open'; } else { return 'Closed';} }

Todo funciona bien. Sin embargo, me gustaría poder acortar el código ya que parece demasiado confuso.

Luego probé lo siguiente:

 function shopHours(time,period) { if(time <= 6 && period === 'AM') { return 'Closed'; } else if (time >= 6 && period === 'PM') { return 'Closed'; } else if (time === 12 && period === 'PM') { return 'Open'; } else { return 'Open';} }

El segundo código también funciona bien y es mucho más corto, sin embargo, hay un problema que no estoy seguro de cómo resolver. Cuando la hora y el período se establecen en 12:00 p. m., el resultado debe ser 'cerrado', pero no estoy seguro de cómo implementarlo.

He intentado agregar el siguiente código, pero parece que no resolvería este problema.

 else if (time === 12 && period === 'AM') { return 'Closed'; }

Estaré muy agradecido a cualquiera que dedique un poco de su tiempo a analizar esta pregunta.

¡Gracias!

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Puede dividirlo en dos escenarios iniciales, AM o PM. Luego verifique la hora para ver si debe estar abierto o cerrado.

 if (period == "AM") { if (time < 6 || time == 12) return "Closed"; return "Open"; } else { if (time >= 6 && time != 12) return "Closed"; return "Open"; }
about 4 years ago · Juan Pablo Isaza Denunciar

0

En mi opinión, es más fácil trabajar con formato de 24 horas. Sin embargo, hay que tener en cuenta 12 p. m. 12PM = 12:00 y 12 a. 12AM = 00:00 .

Después de la conversión, la comparación es bastante fácil.

 function shopHours(time, period) { let hour = time; if (period === 'PM' && hour < 12) hour = hour + 12; if (period === 'AM' && hour === 12) hour = hour - 12; if (hour >= 6 && hour < 18) { return 'Open'; } return 'Closed'; } console.log('12 AM is ' + shopHours(12, 'AM') + '. Expected it to be: Closed'); console.log('3 AM is ' + shopHours(3, 'AM') + '. Expected it to be: Closed'); console.log('6 AM is ' + shopHours(6, 'AM') + '. Expected it to be: Open'); console.log('9 AM is ' + shopHours(9, 'AM') + '. Expected it to be: Open'); console.log('12 PM is ' + shopHours(12, 'PM') + '. Expected it to be: Open'); console.log('3 PM is ' + shopHours(3, 'PM') + '. Expected it to be: Open'); console.log('6 PM is ' + shopHours(6, 'PM') + '. Expected it to be: Closed'); console.log('9 PM is ' + shopHours(9, 'PM') + '. Expected it to be: Closed');

about 4 years ago · Juan Pablo Isaza Denunciar

0

Mi objetivo version.if es simplemente acortar el código, entonces esas funciones am() and pm() se pueden omitir y el código interno se puede agregar donde las estoy llamando. Serían 3 líneas de código.

 function shopHours(time, period){ var result; function am () { Number(time) < 12 && Number(time) >= 6 ? result = "open" : result = "closed"; } function pm() { Number(time) <= 5 || Number(time) === 12 ? result = "open" : result = "closed"; } period === 'AM' ? am() : pm(); return result; } console.log("12 AM is: ", shopHours(12, 'AM'), '; expected: closed'); console.log("3 AM is: ", shopHours(3, 'AM'), '; expected: closed'); console.log("6 AM is: ", shopHours(6, 'AM'), '; expected: open'); console.log("9 AM is: ", shopHours(9, 'AM'), '; expected: open'); console.log("12 PM is: ", shopHours(12, 'PM'), '; expected: open'); console.log("3 PM is: ", shopHours(3, 'PM'), '; expected: open'); console.log("6 PM is: ", shopHours(6, 'PM'), '; expected: closed'); console.log("9 PM is: ", shopHours(9, 'PM'), '; expected: closed');

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda