きょるに @kyoruni

ダッシュで奪取

チラシの裏

【JavaScript】配列の中にある連想配列の最大値を取る

入れ子構造になっているデータを扱おうとした時に困った

全体

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

参考URL