I have an array of objects like this
let array = [
{
sector: "adad"
},
{
sector: "adadasdsd"
},
{
sector: "sdsdsd"
},
{
origin: "sdfsf"
},
{
destination: "dfsfsdf"
}
];
I want it to be like this:
let array = [
{ sector: ["adad", "adadasdsd", "sdsdsd"] },
{ origin: ["sdfsf"] },
{ destination: ["dfsfsdf"] }
];
Let me know how this can be achieved. I know reduce will help me out. However I am stuck on how to proceed on that? Any help?
You could take a hash table for collecting values of same keys and map later to single key/value pairs.
let array = [{ sector: "adad" }, { sector: "adadasdsd" }, { sector: "sdsdsd" }, { origin: "sdfsf" }, { destination: "dfsfsdf" }],
grouped = Object
.entries(array.reduce(
(r, o) => (
Object.entries(o).forEach(([k, v]) => (r[k] = r[k] || []).push(v)),
r
),
Object.create(null)
))
.map(([k, v]) => ({ [k]: v }));
console.log(grouped);