I am trying to get an array of (distinct) keys from an array of objects.
arr =[
{id: 1, desc: "", name: "", objectives: Array(3), …},
{id: 2, desc: "", name: "", objectives: Array(3), …},
{id: 3, desc: "", name: "", objectives: Array(3), …},
{id: 4, desc: "", name: "", objectives: Array(3), …},
]
Desired output is [id, desc, name, objectives]. I have tried:
Object.keys(arr)[0]
// output [{id: 1, desc: "", name: "", objectives: Array(3), …}]
arr.flatMap(Object.key)
// output ["id", "desc", "name", "objectives", "id", "desc", "name", "objectives", "id", "desc", "name", "objectives", "id", "desc", "name", "objectives"]
I'm sorry if I missed the answer to this when scouring SO. Any help would be really appreciated.
You can use a Set
to weed out the duplicates:
const arr = [
{id: 1, desc: "", name: "", objectives: []},
{id: 2, desc: "", name: "", objectives: []},
{id: 3, desc: "", name: "", objectives: []},
{id: 4, desc: "", name: "", objectives: []},
];
const keys = [...new Set(arr.flatMap(Object.keys))];
console.log(keys);