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

166
Views
Encuentra matriz, inesperado 0 !== 0

¿No puedes entender por qué esto funciona de esta manera? ¿A qué tipo js convierte el elemento con valor = 0 y por qué?

 if([1,2,0,1].find(item => item === 0)) { console.log(1); // logs nothing } console.log(0 === 0); // logs true
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

find devuelve el elemento que encontró, y 0 es falso, por lo que if(0) nunca ejecuta el bloque condicional.

Debe usar if (arr.includes(0)) . Alternativas que también funcionarían, pero son más feas, son

  • if (arr.some(item => item === 0))
  • if (arr.findIndex(item => item === 0) > -1)
  • if (arr.find(item => item === 0) !== undefined)
about 4 years ago · Juan Pablo Isaza Report

0

No registra porque el resultado del código a continuación devuelve 0 , que es un valor falso.

 const a = [1,2,0,1].find(item => item === 0) console.log(a) //a is 0

Entonces, la declaración dentro del bloque if no se ejecuta.

about 4 years ago · Juan Pablo Isaza Report

0

Si ejecuta [1,2,0,1].find(item => item === 0) en la consola, verá que el resultado es 0 . Entonces encuentra su elemento y lo devuelve.

Entonces, ¿por qué no hay 1 impreso desde console.log ? Eso es porque 0 es falso, y ahora estás haciendo if (0) , por lo que tu condición nunca es verdadera.

Existen múltiples soluciones para esto, dependiendo del caso de uso, algunas tienen más sentido que otras:

1) Comprobar explícitamente !== undefined

 if ([1,2,0,1].find(item => item === 0) !== undefined) { /* ... */ }

Si find no encuentra nada que coincida con sus criterios, devuelve undefined , por lo que al verificar si el valor devuelto no está undefined , sabrá que se encontró el elemento.

Desventaja: si undefined es un valor posible que realmente se puede buscar, esto falla una vez más.

Además, esto solo tendría sentido si en su código real almacenara el elemento encontrado en una variable para no solo verificar su existencia sino también usarlo para otra cosa más adelante, de lo contrario, una de las otras dos opciones a continuación sería mejor elección.

2) Usa some en lugar de find

Dado que solo está interesado en si se encontró algo , y no en qué elemento exactamente, podría usar some que devuelven true / false en lugar de find , que devuelve el elemento encontrado en sí.

 if ([1,2,0,1].some(item => item === 0)) { /* ... */ }

3) Use includes para buscar directamente el elemento por valor

Dado que parece que solo tiene un item === someValue verificación de algún valor, en realidad no necesita usar uno de los métodos que toman una devolución de llamada en primer lugar, ya que podría especificar el elemento por valor y usar includes , que devuelve true / false :

 if ([1,2,0,1].includes(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!