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

435
Vistas
¿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!

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

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)
about 4 years ago · Juan Pablo Isaza Denunciar

0

Devuelve un boolean desde find . Prueba esto:

 function test(e) { return e === 'Enter' || e === '=' }
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