Merge json array object to itself

Viewed 39

would like to ask, how to merge in nodejs

[ {"id":"1234","pick1":"Heart","isHit1":false},{"id":"2345","pick1":"Spade","isHit1":false},{"id":"1234","pick2":"Diamond","isHit2":false},{"id":"2345","pick2":"Clubs","isHit2":false} ]

To this

[{"id":"1234","pick1":"Heart","isHit1":false,"pick2":"Diamond","isHit2":false}, {"id":"2345","pick1":"Spade","isHit1":false,"pick2":"Clubs","isHit2":false}]

What i've tried is, doing a for loop, but, it takes a while, cause i'm processing around 100 data.

Update:

Already found a shorthand for this, thank you!

Solution:

let result = json1.map(obj => {
  let data = json1.find(item => item.id === obj.id);
  return {...obj, ...data}
});
1 Answers

Processing wise this one is fastest solution, it just loops n times [we can say O(n) complexity]:

let dict = {};
for (let i = 0; i < a.length; i++) {
  dict[a[i].id] = {...dict[a[i].id], ...a[i]};
}
let output = [];
for (key of Object.keys(dict)) {
  output.push(dict[key]);
}
console.log(output);
Related