Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

223
Views
Patrón de estrategia de uso de Javascript para eliminar if else y cambiar

En Javascript, cuando usamos if else o switch, si el valor es un valor de cadena, podemos usar un patrón de estrategia para eliminar if else o cambiar por object[key] :

 const strategies = { strategyA: ()=> { console.log("strategyA") }, strategyB: ()=> { console.log("strategyB") } }

Digamos aquí que tengo dos estrategias, A y B y puedo ejecutar por strategies[strategyValue]()

Pero, ¿cómo puedo configurar la estrategia si no es una cadena? Por ejemplo, en Fn1, el valor es undefined o test o el resto; y en Fn2, tengo el valor con otro valor.

Con estos escenarios, no puedo usar la forma object[key] . ¿Cómo puedo convertirlos al patrón de estrategias?

 const Fn1 = (value) => { const initValue = "" if (!value) return initValue if (value === "test") { return { test: "test", } } return { otherCondition: "otherCondition", } }
 const Fn2 = (value) => { switch (value) { case 1: { return 'a1' } case 2: { return 'c2' } case 3: { return 'b3' } default: { return "other value" } } }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Normalmente, inyectaría la estrategia que debe usarse en función de la entrada o la configuración. ¿Cuándo se debe usar Fn2 en lugar de Fn1?

 const Fn1 = (value) => { ... } const Fn2 = (value) => { ... } const doSomethingWithStrategy = (value, strategyCallback) => { return strategyCallback(value); } const valueForStrategy = 1; const strategy = (valueForStrategy instanceof String) ? Fn1 : Fn2; doSomethingWithStrategy(valueForStrategy, strategy);

Dado que está utilizando funciones, también podría implementar la condición en las propias estrategias y encadenarlas/hacer un bucle.

 const Fn1 = (value) => { if (value instanceof Number) { return false; } ... } const Fn2 = (value) => { ... } const doSomethingWithStrategies = (value, strategyCallbacks) => { for (let index = 0; index < strategyCallbacks.length; index++) { const returnValue = strategyCallbacks[index](value); if (returnValue) { return returnValue; } } } doSomethingWithStrategies(1, [Fn1, Fn2]);
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!