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

138
Visualizações
compruebe que existe una matriz en una matriz usando todos y algunos

Tengo arr = [1,2,3] e ids = [1,2,3,4,5,6] . Quiero encontrar si alguno de los arr item existe en los ids . En caso afirmativo, el invalid es verdadero.

¿Cuál de los siguientes códigos es mejor? o son lo mismo?

 const invalid = !arr.every((id) => ~ids.indexOf(id)); const invalid = arr.some((id) => ids.includes(id));
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Las dos declaraciones tienen una semántica muy diferente.

Las devoluciones de llamada son las mismas, es decir, ids.includes(id) === true es equivalente a ~ids.indexOf(id) != 0 . Pero arr.some() y !arr.every() tienen una semántica diferente:

  • some() devuelve true si al menos un elemento se ajusta a la condición
  • !every() devuelve true si al menos un elemento no cumple la condición

Entonces, en realidad, su primer fragmento no está verificando si hay al menos un elemento en arr que también está contenido en ids , pero si hay al menos un elemento en arr que no está contenido en ids

Entonces, la versión correcta del primer fragmento sería

 const invalid = !arr.every((id) => !(~ids.indexOf(id)));

Es decir, comprobar si no todos los elementos de arr están contenidos en ids . Desde un punto de vista computacional, son más o menos lo mismo:

  • indexOf e includes retorno en el primer elemento elemento que encuentran
  • some se detienen cuando la devolución de llamada se vuelve true por primera vez
  • every se detiene cuando la devolución de llamada devuelve false por primera vez
  • por supuesto, hay una (pequeña) sobrecarga para ~ y !

Pero si compara esto con su segundo fragmento, parece bastante obvio que es mucho más complejo de leer y comprender y, por lo tanto, mucho más complejo de mantener.

 const arr = [1,2,3], ids = [1,2,3,4,5,6] const i1 = !arr.every((id) => ~ids.indexOf(id)), i2 = arr.some((id) => ids.includes(id)), i3 = !arr.every((id) => !(~ids.indexOf(id))); console.log(i1, i2, i3)

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