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

285
Views
Refactorización A && B && B > A

¿Hay alguna manera de refactorizar esta expresión lógica?

 A && B && B > A

Estoy aprendiendo y me gustaría saber otra forma de escribir la misma expresión Gracias

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Divida las expresiones y colóquelas en variables con nombres legibles.

Debido a la falta de información sobre lo que son A y B, asumo que la primera mitad de la expresión se asegura de que ambos valores sean verdaderos y luego los comparas:

 const bothTruthy= A && B; const BLargerThanA = B > A; const yourExpression = bothTruthy && BLargerThanA;
about 4 years ago · Juan Pablo Isaza Report

0

Actualizar:

De acuerdo, la siguiente solución no funciona para todos los casos.

Creo que no necesita refactorizar su lógica de expresión si desea que A y B se interpreten como verdaderos. Durante el procesamiento de expresiones lógicas, el motor las optimiza de forma independiente y actúa de forma perezosa , por ejemplo: si en la expresión A && (B || C) el valor A se interpreta como false , entonces el procesamiento de la expresión finalizará de inmediato. y se devolverá el valor A ( false o un valor equivalente), pero si el valor de A se interpreta como true , el procesamiento de la condición continuará. Además, si B se interpreta como true , entonces debido a la adición lógica (OR) , el procesamiento terminará con un valor equivalente a true , y si B se interpreta como false , entonces el procesamiento continuará...


Prueba esto - A && (B > A)

 const cases = [ [true, false], [false, true], [false, false], [true, true], [1, 2], [2, 1], [1, 0], [0, 1], [undefined, 1], [1, undefined], [undefined, 0], [0, undefined], [null, undefined], [undefined, null], [1, NaN], [NaN, 1], [0, NaN], [NaN, 0], [{}, 0], [1, {}], [{}, []], [[], {}], ['2', 1], [1, '2'], [true, 1], [1, true], [true, '1'], ['1', true], [0, -1], [-1, 0], [1, -1], [-1, 1], [false, -1], [-1, false] ]; const fails = []; cases.forEach((c) => { const [A, B] = c; const r1 = A && B && (B > A); const r2 = A && (B > A); // <-- simplified condition const r = !!r1 === !!r2; if (!r) fails.push({c: c, r1, r2}); }); if (fails.length > 0) { console.log('Not all cases passed!'); console.log(fails); } else { console.log('All cases passed!'); }
 .as-console-wrapper { min-height: 100%!important; top: 0; }

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!