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

97
Vistas
Si declaración con múltiples || condiciones

Estoy recorriendo una serie de objetos y tratando de ver si hay una mejor manera de escribir esto (siento que la hay).

Esta es mi función a continuación.

 getCallInfo = (callSch: any, security: any) => { const callObj = { CallTimingType: 'Not Callable', isCheckMark: null, }; if (!security.IsCallable) return callObj; callSch.Calls.forEach((el: { CallTimingType: string }) => { if (el.CallTimingType === CallTimingType.SpecificDates) { callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; } if ( el.CallTimingType === CallTimingType.AnyTime || el.CallTimingType === CallTimingType.Monthly || el.CallTimingType === CallTimingType.OnPaymentDates || el.CallTimingType === CallTimingType.AnyInterestAdjustmentDate ) { callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; } }); return callObj; };

básicamente, lo que está haciendo es devolver el objeto predeterminado si security.IsCallable es falso pero si es verdadero, recorrer la matriz de objetos y establecer el objeto predeterminado en diferentes valores. Lo que básicamente estoy haciendo es tratar de refactorizar esto. CallTimingType es un objeto con estos valores de enumeración. ¿Alguna idea?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Podría usar Array.prototype.some() para iterar y probar si el.CallTimingType coincide con algún valor.

 if ( el.CallTimingType === CallTimingType.AnyTime || el.CallTimingType === CallTimingType.Monthly || el.CallTimingType === CallTimingType.OnPaymentDates || el.CallTimingType === CallTimingType.AnyInterestAdjustmentDate )

Se puede reescribir como:

 const callTimingTypes = [ CallTimingType.AnyTime, CallTimingType.Monthly, CallTimingType.OnPaymentDates, CallTimingType.AnyInterestAdjustmentDate ]; if (callTimingTypes.some((t) => el.CallTimingType === t))
about 4 years ago · Santiago Trujillo Denunciar

0

Puede reescribir su cláusula con el operador de switch case para que quede claro:

 callSch.Calls.forEach((el: { CallTimingType: string }) => { switch (el.CallTimingType) { case CallTimingType.SpecificDates: callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; break; case CallTimingType.AnyTime: case CallTimingType.Monthly: case CallTimingType.OnPaymentDates: case CallTimingType.AnyInterestAdjustmentD: callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; break; } });

Alternativamente, puede usar Set :

 callSch.Calls.forEach((el: { CallTimingType: string }) => { const discreteSet = new Set([CallTimingType.SpecificDates]); const continuousSet = new Set([ CallTimingType.AnyTime, CallTimingType.Monthly, CallTimingType.OnPaymentDates, CallTimingType.AnyInterestAdjustmentD, ]); if (discreteSet.has(el.CallTimingType)) { callObj.CallTimingType = 'Discrete'; callObj.isCheckMark = true; } else if (continuousSet.has(el.CallTimingType)) { callObj.CallTimingType = 'Continuous'; callObj.isCheckMark = true; } });
about 4 years ago · Santiago Trujillo 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