0

This is an input array of object

var array= [
    { name : "c", arr: "d" },
    { name : "a", arr: "b" },
    { name : "c", arr: "e" },
    { name : "a", arr: "b" },
    { name : "c", arr: "d" }
];

result should be like

var result =[
     { name : "c", arr: "d,e" },
     { name : "a", arr: "b" }
]
Jack Bashford
  • 40,575
  • 10
  • 44
  • 74
Ajay yadav
  • 254
  • 2
  • 9

1 Answers1

3

Use reduce, a Set to store the unique letters, then join them together with map at the end:

var array= [
    { name : "c", arr: "d" },
    { name : "a", arr: "b" },
    { name : "c", arr: "e" },
    { name : "a", arr: "b" },
    { name : "c", arr: "d" }
];

const res = Object.values(array.reduce((a, { name, arr }) => {
  a[name] = a[name] || { name, arr: new Set() };
  a[name].arr.add(arr);
  return a;
}, {})).map(({ name, arr }) => ({ name, arr: [...arr].join(",")}));

console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }
Jack Bashford
  • 40,575
  • 10
  • 44
  • 74