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

113
Visualizações
Compare dos matrices de objetos y elimine objetos de la primera matriz si coincide un valor de propiedad

Tengo 2 matrices de objetos como

 const arrayOne = [{id: 1, name: 'one'}, {id: 2, name: 'two'}, {id: 3, name: 'three'}]; const arrayTwo = [{id: 2, name: 'two'}, {id: 3, name: 'three'}];

Aquí, necesito comparar ambas matrices y eliminar los objetos coincidentes de arrayOne, lo que finalmente debería dar

 this.arrayOne = [{id: 1, name: 'one'}];

Intenté como se muestra a continuación, pero está eliminando todos los objetos de la matriz.

 this.arrayOne = this.arrayOne.filter(o1 => this.arrayTwo.some(o2 => o1.id === o2.id));

¿Qué estoy haciendo mal aquí? Por favor recomiende. Gracias

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

 const arrayOne = [ { id: 1, name: "one" }, { id: 2, name: "two" }, { id: 3, name: "three" }, ]; const arrayTwo = [ { id: 2, name: "two" }, { id: 3, name: "three" }, ]; const arrayTwoIds = new Set(arrayTwo.map((el) => el.id)); const arrayOneFiltered = arrayOne.filter((el) => !arrayTwoIds.has(el.id)); console.log(arrayOneFiltered); // [ { id: 1, name: 'one' } ]

Según el tamaño de la matriz, la creación de un conjunto puede mejorar el rendimiento, ya que no es necesario arrayTwo arrayOne.length veces, sino solo una vez. Después de eso, puede buscar la existencia de una identificación en arrayTwo en tiempo constante.

Sin embargo, como se señaló en otra respuesta, esto no es necesario si las matrices son pequeñas (como en su ejemplo). En este caso, también podría usar este one-liner:

 arrayOne = arrayOne.filter((elOne) => !arrayTwo.some((elTwo) => elOne.id === elTwo.id));

Aquí, arrayOne tendría que ser mutable, es decir, definido con let .

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede encontrarlo comparándolo con id.

Y arrayOne debe ser let.

 let arrayOne = [{id: 1, name: 'one'}, {id: 2, name: 'two'}, {id: 3, name: 'three'}]; const arrayTwo = [{id: 2, name: 'two'}, {id: 3, name: 'three'}]; arrayOne = arrayOne.filter(one => !arrayTwo.find(two => one.id == two.id)); console.log(arrayOne);
about 4 years ago · Juan Pablo Isaza Relatório

0

 const arrayOne = [{ id: 1, name: 'one' }, { id: 2, name: 'two' }, { id: 3, name: 'three' }]; const arrayTwo = [{ id: 2, name: 'two' }, { id: 3, name: 'three' }]; const arrayTwoId = arrayTwo.map(el => (el.id)); // extract id from arrayTwo const result = arrayOne.filter(el => !arrayTwoId.includes(el.id)); console.log(result);


  1. Extrae todos los id s de arrayTwo .
  2. filtre aquellos objetos que no coincidan con la matriz de id s de arrayTwo .
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