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

197
Visualizações
¿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 Respostas
Responde à pergunta

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