0

I want to convert one data array to another array with new change means, if id match then push data into current one otherwise create new object with second id

let finaldata=[]

let data =[{id:1,name:"meet"},{id:2,name:"raj"},{id:1,name:"hari"},{id:3,name:"hari"},{id:2,name:"ram"}]

//I want this below array how can I archive this.?

finaldata= [ { id: 1, names: [ 'meet', 'hari' ] },
  { id: 2, names: [ 'raj', 'ram' ] },
  { id: 3, names: [ 'hari' ] }]
pilchard
  • 12,414
  • 5
  • 11
  • 23
Meet Majevadiya
  • 355
  • 2
  • 8

1 Answers1

-1
let finaldata = [];
let data =[{id:1,name:"meet"},{id:2,name:"raj"},{id:1,name:"hari"},{id:3,name:"hari"},{id:2,name:"ram"}];

data.forEach((e) => {
    let val = {};
    val.id = e.id;
  val.names = [e.name];

if (finaldata.length > 0) {
  let match = 0;
  
  for(i = 0; i < finaldata.length; i++) {
    if(finaldata[i].id == e.id){
      finaldata[i].names.push(e.name);
      match = 1;
    }
  }
  
  if(match == 0){
  finaldata.push(val);
  }
} else {
    finaldata.push(val);
}

});

console.log(finaldata);
Olivier
  • 104
  • 3