入れ子構造になっているデータを扱おうとした時に困った
全体
memters の中にある「idの最大値」を取りたい(この場合 11)。
const categories = [
{
id: 100,
name: 'cat',
members: [
{ id: 1, name: 'mike' },
{ id: 2, name: 'tama' },
{ id: 9, name: 'neko' }
]
},
{
id: 102,
name: 'dog',
members: [
{ id: 3, name: 'poti' },
{ id: 11, name: 'cookie' },
{ id: 4, name: 'inu' }
]
}
]
function getMaxId (categories) {
const maxId = categories.map(category => {
return Math.max.apply(
null,
category.members.map(member => {
return member.id
})
)
})
return Math.max.apply(null, maxId)
}
const result = getMaxId(categories)
console.log(result)
結果
11
ポイント
-
23行目
- categoriesの中身を、categoryとして1つずつ取り出す
-
26行目
- categoryの中にあるmembersを、memberとして1つずつ取り出す
-
27行目
- memberのidを返す
- [1, 2, 9] [3, 11, 4]
-
24行目
- membersのidの最大値を取る
- 9, 11
-
31行目
- categoryごとのmembersのidの中から、最大値を取る
- 11