Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

109
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!