Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

106
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda