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

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

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 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