I have an array with multiple objects having the same name. How can I segregate the array based on the name?
I tried with map, filter but didn't work finally I used reduce also but not getting the output.
const result = Object.values(this.optionsArr.reduce((a, c) => {
a[c.name] = a[c.name] || {name: c.name};
a[c.name].options.push(c.options);
return a;
}, {})).map(item => ({...item, accessDetails: Object.values(item.accessDetails)}));
INPUT:
[{name: "audio", options:{name:'true', value: 'T'}},
{name: "audio", options:{name:'false', value: 'F'}},
{name: "audio", options:{name:'yes', value: 'Y'}},
{name: "video", options:{name:'true', value: 'T'}},
{name: "video", options:{name:'yes', value: 'Y'}},
{name: "video", options:{name:'false', value: 'F'}},
{name: "call", options:{name:'true', value: 'T'}},
{name: "call", options:{name:'No', value: 'N'}},
{name: "call", options:{name:'false', value: 'F'}}]
Expected Output
[{name: "audio", options:[{name:'true', value: 'T'},{name:'false', value: 'F'},{name:'yes', value: 'Y'}]},
{name: "video", options:[{name:'true', value: 'T'},{name:'false', value: 'F'},{name:'yes', value: 'Y'}]},
{name: "call", options:[{name:'true', value: 'T'},{name:'false', value: 'F'},{name:'yes', value: 'Y'}]}]