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

195
Views
¿Cómo puedo comparar tres matrices de objetos para agregar o eliminar nuevos valores?

Tengo tres arreglos de objetos. La primera matriz de objetos es el original state .

 let originalArrState = [ { id:1, name:'Name 1 from id 1', number: 15 // => this needs to be removed based on the value `number` // in secondArrCompare - because we have there object with id of 1 }, { id:1, name:'Name 2 from id 1', number: 125 }, { id:1, name:'Name 3 from id 1', number: 130 }, // 135 needs to be added based on the value `number` in firstArrCompare because we have there // object with id of 1 ]

ahora tengo otros dos arreglos de objetos que necesito comparar con el arreglo original

 let firstArrCompare = [ { id:1, number:135 } ] let secondArrCompare = [ { id:1, number:15 } ]

la idea es que debe ser dinámicamente, por lo que, en función de los valores en secondArrCompare , debemos eliminar objetos de originalArrState y, en función de firstArrCompare , debemos agregar uno nuevo después de eliminar el anterior.

Entonces, el resultado debería estar en la matriz final de objetos con valores 125 130 135 .

 let originalArrState = [ { id:1, name:'Name 2 from id 1', number: 125 }, { id:1, name:'Name 3 from id 1', number: 130 }, { id:1, number: 135 }, ]

Si firstArrCompare y secondArrCompare están vacíos, no se debe agregar ni eliminar nada. Los valores internos siempre serán uno a uno, por lo que un valor con la misma identificación en firstArrCompare y otro en secondArrCompare.

También podría haber objetos multiplicados con otra identificación, por ejemplo id-2 que mutará el estado original.

Por ejemplo

 let firstArrCompare = [ { id:1, number:135 }, { id:2, number:1000 } // we search for id 2 in original arr so we can add this after the removing ] let secondArrCompare = [ { id:1, number:15 }, { id:2, number:100 } // now we need to search for id 2 in original arr to remove that ]

Entonces, si hay id 1 en el primer arreglo, siempre habrá un objeto con id 1 en el segundo arreglo, por lo tanto, una relación uno a uno.

me quedé atascado en

 var newArr = originalArrState.filter(itemOne => { return !secondArrCompare.some(itemTwo => { return itemOne.id == itemTwo.id; }) })
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Haciendo algunos cambios en su implementación. Tuvo que filtrar las coincidencias de combinación de id y number ; de lo contrario, se eliminarán todos los elementos con id:1 . Obtenemos newArr de esto.
Después de eso, firstArrCompare y agréguelo a newArray si el elemento con la misma id está presente en newArr

 let originalArrState = [{ id: 1, name: 'Name 1 from id 1', number: 15 }, { id: 1, name: 'Name 2 from id 1', number: 125 }, { id: 1, name: 'Name 3 from id 1', number: 130 }, ] let firstArrCompare = [{ id: 1, number: 135 }, { id: 2, number: 1000 } ] let secondArrCompare = [{ id: 1, number: 15 }, { id: 2, number: 100 } ] var newArr = originalArrState.filter(itemOne => { return !secondArrCompare.some(itemTwo => { return itemOne.id === itemTwo.id && itemOne.number === itemTwo.number; }) }) firstArrCompare.forEach((el) => { if (newArr.some((item) => item.id===el.id)){ newArr.push(el) } }) console.log(newArr)

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!