I have an API that gives me a response of something like this:
{
"item": [
{
"_id": "5a48e0c100a5863454c0af2a",
"name": "Maths",
"created_by": "5a43ee3231ad5a6b0850d961",
"__v": 0,
"created_on": "2017-12-31T13:06:09.957Z",
"active": 1,
"grade": [],
"syllabus": [
{
"_id": "5a47a5faed12d92d0c2449f4",
"name": "CBSE",
"description": "CBSE Syllabus",
"created_by": "5a43ee3231ad5a6b0850d961",
"__v": 0,
"created_on": "2017-12-30T14:43:06.305Z",
"banner": 1,
"active": 1
},
{
"_id": "5a47a615ed12d92d0c2449f5",
"name": "State Board",
"description": "State Board Syllabus",
"created_by": "5a43ee3231ad5a6b0850d961",
"__v": 0,
"created_on": "2017-12-30T14:43:33.328Z",
"banner": 1,
"active": 1
}
]
}
]
}
As you can see, there is an item named maths
in the array of item
. Now inside the maths, we have another array of syllabus
. I want to join the names of all the syllabus of maths
. In simple terms, say I want to do something like this:
array element 1 - maths - CBSE, State Board
array element 2 - chemistry - CBSE, State Board
AFAIK, we can't do it without 2 forEach loops. Is there any better way to deal with this situation?
Probably like this:
const result = item.map(it => ({
name: it.name,
syllabi: it.syllabus.map(s => s.name).join(', ')
}));
https://jsfiddle.net/ernmtcgj/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With