ダッシュで奪取

自分用のメモ

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

入れ子構造になっているデータを扱おうとした時に困ったので、メモです。

目次

  1. 全体
  2. ポイント
  3. 参考URL

1. 全体

「idの最大値」を取ります。

let categories = [
    {
        id: 1,
        name: 'cat',
        members: [
            { id: 1, name: 'mike' },
            { id: 2, name: 'tama' },
            { id: 9, name: 'neko' }
        ]
    },
    {
        id: 2,
        name: 'dog',
        members: [
            { id: 3,  name: 'poti' },
            { id: 11, name: 'cookie' },
            { id: 4,  name: 'inu' }
        ]
    }
];

function getMaxId (categories) {
    let maxId = categories.map(category => {
        return Math.max.apply(
            null,
            category.members.map(member => {
                return member.id
            })
        )
    });
    return Math.max.apply(null, maxId);
}
var result = getMaxId(categories);
console.log(result);
結果
11

2. ポイント

// 22:
function getMaxId (categories) {
    let maxId = categories.map(category => {
        return Math.max.apply(
            null,
            category.members.map(member => {
                return member.id
            })
        )
    });
    return Math.max.apply(null, maxId);
}
  • 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

3. 参考URL