Reputation: 1
[[{ id: 26, type: "Source", name: "Email" }], [{ id: 27, type: "Source", name: "Id" }, { id: 29, type: "Divider", name: "+" }, { id: 30, type: "Source", name: "SupplierId" }], [{ id: 28, type: "Source", name: "CommunityId" }]
How do I convert this array of array of object above to an array of arrays like this where the "name" is singled out?
[["Email"],["Id","+", "SupplierId"],["CommunityId"]]
I have already tried to map it like this:
this.exportColumns = columns.flatMap(obj => obj.sourceColumn).map(obj => obj?.name);
but I get this outcome:
[ "Email", "Id", "+", "SupplierId", "CommunityId" ]
Upvotes: 0
Views: 691
Reputation: 648
here is my way to achieve output.
const d = [
[{ id: 26, type: "Source", name: "Email" }],
[{ id: 27, type: "Source", name: "Id" }, { id: 29, type: "Divider", name: "+" }, { id: 30, type: "Source", name: "SupplierId" }],
[{ id: 28, type: "Source", name: "CommunityId" }]
]
const newArr = d.reduce((prev, curr) => {
if(Array.isArray(curr)) {
prev.push(curr.map((p) => p.name))
} else {
prev.push(curr.name)
// or use this if you want array
// prev.push([curr.name])
}
return prev;
}, [])
console.log(newArr)
Upvotes: 0
Reputation: 2027
use 2nd map inside the 1st layer of arrays
data.map(item => item.map(i => i.name));
Upvotes: 1