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

173
Vistas
(JavaScript) ¿Lo mejor era verificar múltiples condiciones y finalizar la ejecución tan pronto como una devuelva falso?

Actualmente estoy trabajando en una aplicación de turno de servicio. Necesito calcular qué empleado puede trabajar en cada día particular del mes. Esto también debe actualizarse "sobre la marcha", ya que si alguien es asignado a trabajar el día 1, por ejemplo, no podrá trabajar el día 2.

Si alguien puede trabajar en un día o no depende de múltiples condiciones. Mi idea es tener una función de "controlador" que verifique si alguna de las funciones de "condiciones" devuelve falso = eso significa que la persona no está disponible para ese día.

Me gusta una forma simplemente multiplicando los valores de retorno como

 const controller = (day, employee) => { return ( cond1(day, employee) * cond2(day, employee) * cond3(day, employee) * cond4(day, employee) * cond5(day, employee) ) }

dado que verdadero == 1 y falso == 0, devuelve 0 tan pronto como una condición es falsa. Pero pensé que esta podría no ser la forma más eficiente porque verifica todas las condiciones. Estoy buscando una manera de regresar tan pronto como una condición sea falsa.

Podría usar if-else pero esto se convertiría en una condición ilegible, muy rápido

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

0

&& provocará un cortocircuito si el primer valor es false . Probar esto:

 function foo() { console.log('called foo'); return false; } function bar() { console.log('called bar'); return true; } foo() && bar()

La salida solo debe called foo . El cortocircuito significa que la expresión booleana solo evaluará tanto como sea necesario; si el lado izquierdo de && es falso, entonces la expresión es falsa y no es necesario evaluar el lado derecho. Tenga en cuenta que esto también sucede con || , pero al revés: si el lado izquierdo de la expresión es true , el lado derecho no se evalúa.

Si todas las funciones toman exactamente los mismos argumentos que su ejemplo implica, podría usar [].every , que también "cortocircuita" al finalizar la iteración antes de tiempo. Sin embargo, advertiría contra esto para su ejemplo específico, ya que puede dificultar el mantenimiento de las cosas en el caso de que incluso una de esas funciones cond tome parámetros diferentes.

 [cond1, cond2, cond3, cond4, cond5].every((cond) => cond(day, employee))
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