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

167
Visualizações
Agrupar matriz de objetos por id en javascript

Hay tres objetos como este.

 var Object1 = [ { "_id": "62397fd1c517e11e05935cc7", "nickname": "uknowTest2", "createdAt": "2022-03-22T07:50:41.769Z", }, { "_id": "623824ccd1164bb8d9cc2521", "nickname": "qnvvzjrh", "createdAt": "2022-03-21T07:10:04.888Z", "animalCount": 1 } ]; var Object2 = [ { "_id": "62397fd1c517e11e05935cc7", "data": 36 }, { "_id": "623824ccd1164bb8d9cc2521", "data": 542717 } ]; var Object3 = [ { "_id": "62397fd1c517e11e05935cc7", "data2": 133111 }, { "_id": "623824ccd1164bb8d9cc2521", "data2": 540517 } ];

Y quiero agruparlos así:

 var result = [ { "_id": "62397fd1c517e11e05935cc7", "data": 36, "data2": 133111, "nickname": "uknowTest2", "createdAt": "2022-03-22T07:50:41.769Z", }, { "_id": "623824ccd1164bb8d9cc2521", "data": 542717, "data2": 540517, "nickname": "qnvvzjrh", "createdAt": "2022-03-21T07:10:04.888Z", "animalCount": 1 } ];

Se generan varios tipos de datos similares. No estoy seguro de qué hacer. Usar object.assign no parece ser la solución.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Esta solución está tomando la complejidad del tiempo de O(n)

Aquí tienes:

 const allObj = [...Object1, ...Object2, ...Object3]; const preResult = {}; allObj.forEach((obj)=> { preResult[obj._id] = preResult[obj._id] ? {...preResult[obj._id], ...obj} : obj; }) const result = Object.values(preResult) console.log(result)

Explicación:

  1. allObj es la concatenación de todos los objetos
  2. allObj.forEach está recorriendo todos los elementos (subobjetos)
  3. Uso del operador ternario para asignar el valor
  4. Si obj._id (clave) ya existe en preResult , entonces asigne {...preResult[obj._id], ...obj} (que es la concatenación del valor existente y el valor nuevo)
  5. De lo contrario, asigne un nuevo valor obj
  6. preResult es un par de obj._id (clave) y objeto fusionado (valores)
  7. el resultado final son los únicos valores de preResult

Fragmento de código:

 var Object1 = [ { "_id": "62397fd1c517e11e05935cc7", "nickname": "uknowTest2", "createdAt": "2022-03-22T07:50:41.769Z", }, { "_id": "623824ccd1164bb8d9cc2521", "nickname": "qnvvzjrh", "createdAt": "2022-03-21T07:10:04.888Z", "animalCount": 1 } ]; var Object2 = [ { "_id": "62397fd1c517e11e05935cc7", "data": 36 }, { "_id": "623824ccd1164bb8d9cc2521", "data": 542717 } ]; var Object3 = [ { "_id": "62397fd1c517e11e05935cc7", "data2": 133111 }, { "_id": "623824ccd1164bb8d9cc2521", "data2": 540517 } ]; const allObj = [...Object1, ...Object2, ...Object3]; const preResult = {}; allObj.forEach((obj)=> { preResult[obj._id] = preResult[obj._id] ? {...preResult[obj._id], ...obj} : obj; }) // console.log(preResult) const result = Object.values(preResult) console.log(result)

about 4 years ago · Juan Pablo Isaza Relatório

0

 var Object1 = [ { "_id": "62397fd1c517e11e05935cc7", "nickname": "uknowTest2", "createdAt": "2022-03-22T07:50:41.769Z", }, { "_id": "623824ccd1164bb8d9cc2521", "nickname": "qnvvzjrh", "createdAt": "2022-03-21T07:10:04.888Z", "animalCount": 1 } ]; var Object2 = [ { "_id": "62397fd1c517e11e05935cc7", "data": 36 }, { "_id": "623824ccd1164bb8d9cc2521", "data": 542717 } ]; var Object3 = [ { "_id": "62397fd1c517e11e05935cc7", "data2": 133111 }, { "_id": "623824ccd1164bb8d9cc2521", "data2": 540517 } ]; let result = [...Object1]; let temp = [...result]; Object2.map(val=>{ result.map((val2,index)=>{ if(val2._id===val._id){ val2 = {...val2,...val}; temp[index] = val2 } }) }) result = [...temp]; Object3.map(val=>{ result.map((val2,index)=>{ if(val2._id===val._id){ val2 = {...val2,...val}; temp[index] = val2 } }) }) console.log(temp)

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