• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

332
Views
¿Puede usar Array.prototype.find() para verificar más de una condición para encontrar algo?

Estoy creando una aplicación de calculadora en JS y la hice funcionar usando el mouse para hacer clic en los botones de la pantalla, así que ahora estoy integrando el uso del teclado. Para resumir, en parte de mi funcionalidad antes de que se usara el teclado, estaba usando la propiedad de búsqueda en una matriz para encontrar el último operador en el que se hizo clic que NO era el = btn y funcionó perfectamente bien:

 lastOperatorThatIsNotEqual = operatorArray.reverse().find(e => e !== "=")

Ahora que estoy usando el teclado, cuando hago clic en Intro, quiero que sea el equivalente a hacer clic en = btn, así que intenté hacerlo de esta manera usando una función externa y una instrucción if/else

 function test(e) { if (e !== 'Enter') { return e } else if (e !== '=') { return e } else { console.log('wrong') } } lastOperatorThatIsNotEqual = operatorArray.reverse().find(test)

Sin embargo, lo anterior no funciona. Si elimino la parte else if para que sea solo e !== 'Enter' o e !== '=' entonces funciona bien, pero no puedo tener ambos al mismo tiempo. Me imagino que probablemente sea más eficiente hacer que se verifique de esa manera en lugar de hacer dos funciones, pero no puedo entender por qué esto no funciona.

Cualquier sugerencia es muy apreciada. ¡Gracias!

almost 3 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Sus condiciones están en mal estado. Este

 if (e !== 'Enter') { return e } else if (e !== '=') { return e }

invariablemente resultará en el cumplimiento de una de esas ramas. Si no se cumple la primera condición, entonces e es 'Enter' , por lo que e !== '=' se cumple.

También debe devolver un valor booleano (o un valor que se sabe que es verdadero o falso) de una devolución de llamada .filter ; no devuelva el valor que se repite, porque si el valor es falso, no se incluirá en el resultado formación.

 const lastOperatorThatIsNotEqual = operatorArray.reverse().find( e => e !== "=" && e !== 'Enter' )

o

 function test(e) { if (e === 'Enter') { return false; } if (e === '=') { return false; } return true; } lastOperatorThatIsNotEqual = operatorArray.reverse().find(test)
almost 3 years ago · Juan Pablo Isaza Report

0

Devuelve un boolean desde find . Prueba esto:

 function test(e) { return e === 'Enter' || e === '=' }
almost 3 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 Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error