Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

275
Visualizações
¿Por qué el método Array.some() se comporta de manera diferente?

Tengo una matriz que contiene elementos vacíos.

 let arr = ['item 1', 'item 2', , 'item 3', , 'item 4', 'item 5'];

Estoy tratando de averiguar si hay algún elemento vacío en una matriz usando el método Array.some() pero devuelve falso.

 // Input array const arr = ['item 1', 'item 2', , 'item 3', , 'item 4', 'item 5']; // If you see in console, empty element has been filled with undefined console.log(arr); // ["item 1","item 2",undefined,"item 3",undefined,"item 4","item 5"] // Now I am just checking if is there any falsy value in an array. Ideally it should return true as we have undefined values in an arr but it is returning `false`. console.log(arr.some(item => !item)); // false

Hay muchas otras formas de verificar si hay valores undefined en una matriz, pero aquí pregunto específicamente sobre el comportamiento de Array.some() . Si voy a reemplazar explícitamente los elementos vacíos con undefined, devolverá true .

 const arr = ['item 1', 'item 2', undefined, 'item 3', undefined, 'item 4', 'item 5']; console.log(arr.some(item => !item)); // true

¿Alguien puede saber por qué se está comportando así? No proporcione ninguna solución alternativa, ya que conozco otras soluciones alternativas.

about 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Ver MDN :

El método some() ejecuta la función callbackFn una vez para cada elemento presente en la matriz hasta que encuentra aquel en el que callbackFn devuelve un valor verdadero (un valor que se vuelve verdadero cuando se convierte en un valor booleano). Si se encuentra dicho elemento, some() inmediatamente devuelve verdadero. De lo contrario, some() devuelve falso. callbackFn se invoca solo para índices de la matriz con valores asignados. No se invoca para índices que han sido eliminados o a los que nunca se les han asignado valores.

Se puede ver que aquí:

 const arr = ['item 1', 'item 2', , 'item 3', , 'item 4', 'item 5']; console.log(arr.some((item, index) => { console.log(item, index); return !item }));


Si voy a reemplazar explícitamente los elementos vacíos con indefinidos, entonces devolverá verdadero.

Esa es la diferencia entre "nunca se le asignó un valor" y "se le asignó un valor undefined ".

about 4 years ago · Santiago Trujillo Relatório

0

Los elementos están realmente empty y not undefined

 const arr = ['item 1', 'item 2', , 'item 3', , 'item 4', 'item 5']; // If you see in console, empty element has been filled with undefined console.log(arr); VM146:4 (7) ['item 1', 'item 2', empty, 'item 3', empty, 'item 4', 'item 5']

Esa es la razón por la que some scripts se comportan de manera diferente. Este hilo hace un buen trabajo explicando cosas.

Verifique que la matriz tenga un elemento vacío o no

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda