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

161
Visualizações
Eliminar múltiples elementos por propiedades de la matriz por lista de propiedades

Tengo un problema que no puedo solucionar y me parece un poco extraño. Teniendo una lista de objetos foo , cada objeto tiene una propiedad de userId de usuario, quiero filtrar la lista para eliminar todos los elementos que contienen dicho userId de usuario que están en la matriz de bar . Usé los métodos filter() y some() , sin embargo, solo funcionan cuando la matriz de bar tiene solo un elemento. ¿De alguna manera some() impide que se ejecute todo el filtro cuando encuentra el primer elemento coincidente? Le agradecería que me explicara por qué esto no funciona.

Código de ejemplo:


let foo = [ { "userId": 1, }, { "userId": 2 }, { "userId": 3 }, { "userId": 4 } ]; let bar = [1, 2]; console.log(foo.filter(user => bar.some(id => id !== user.userId)));

Valor esperado:

 [ { "userId": 3 }, { "userId": 4 } ]

Pero obtuve:

 [ { "userId": 1, }, { "userId": 2 }, { "userId": 3 }, { "userId": 4 } ]
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Su condición actualmente verifica si hay al menos un elemento en la matriz de barras que no sea el mismo que la matriz de elementos sobre la que está iterando . Eso será cierto para todos los artículos.

Debe verificar los elementos que existen usando some() y, en función de eso, devolver el valor inverso.

 let foo = [ { "userId": 1, }, { "userId": 2 }, { "userId": 3 }, { "userId": 4 } ]; let bar = [1, 2]; console.log(foo.filter(user => !bar.some(id => id === user.userId)));

about 4 years ago · Juan Pablo Isaza Relatório

0

simplemente puede usar métodos includes para verificar esta situación.

 let foo = [ { "userId": 1, }, { "userId": 2 }, { "userId": 3 }, { "userId": 4 } ]; let bar = [1, 2]; // filter out for user IDs not in bar console.log(foo.filter(user => !bar.includes(user.userId)));

para obtener más información sobre el método de inclusión: MDN

about 4 years ago · Juan Pablo Isaza Relatório

0

El método some() prueba si al menos un elemento de la matriz pasa la prueba.

Explicación de por qué some() no funciona aquí:

[1,2].some(id !== 1) devolverá true porque id 2 !== 1

[1,2].some(id !== 2) devolverá true porque id 1 !== 2

[1,2].some(id !== 3) devolverá true porque id 1 !== 3

[1,2].some(id !== 4) devolverá true porque id 1 !== 4

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