I have an object as follows:
{
"stage": [
{
"name": "Stage 1",
"rounds": [
{
"matches": [
{
"id": 1,
"start_at": "2021-04-01"
},
]
},
{
"matches": [
{
"id": 3,
"start_at": "2021-04-03"
}
]
}
]
},
{
"name": "Stage 2",
"rounds": [
{
"matches": [
{
"id": 7,
"start_at": "2021-04-07"
}
]
},
{
"matches": [
{
"id": 8,
"start_at": "2021-04-08"
}
]
}
]
}
]
}
I need to put all the values with the sauce key into a separate array so that I can create a menu. i need all “start_at” values inside a separate array, like:
[ "2021-04-01", "2021-04-03", "2021-04-04", ]
in vue.js i have access “start_at” values separately, but I want them all together
Advertisement
Answer
You can use flatMap to achieve this.
const obj = {
stage: [
{
name: "Stage 1",
rounds: [
{
matches: [
{
id: 1,
start_at: "2021-04-01",
},
],
},
{
matches: [
{
id: 3,
start_at: "2021-04-03",
},
],
},
],
},
{
name: "Stage 2",
rounds: [
{
matches: [
{
id: 7,
start_at: "2021-04-07",
},
],
},
{
matches: [
{
id: 8,
start_at: "2021-04-08",
},
],
},
],
},
],
};
const result = obj.stage.flatMap(({ rounds }) => {
return rounds.flatMap(({ matches }) => matches.flatMap((m) => m.start_at));
});
console.log(result);