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
  • 43,180
  • 11
  • 50
  • 79
Ajay yadav
  • 264
  • 2
  • 10

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
  • 43,180
  • 11
  • 50
  • 79