JavaScript オブジェクト配列の要素で最大値を取得する
JavaScript 配列の要素で最大値・最小値を取得するで配列の要素の最大値・最小値を取得する方法を紹介しました。
今回はオブジェクトの配列の場合に要素の最大値・最小値を取得します。
以下のようなオブジェクトの配列があったときに、年齢の最大値(Max(age)
)を取得します。SQL
のGROUP BY
で集計するイメージです。
var arr = [
{
name: '一郎',
age: 25
},
{
name: '二郎',
age: 21
},
{
name: '三郎',
age: 18
}
];
var age = arr.map(function (p) {
return p.age;
});
console.log(Math.max.apply(null, age)); // 25
console.log(Math.min.apply(null, age)); // 18
解説
Math.max.apply
はJavaScript 配列の要素で最大値・最小値を取得するで紹介した方法と同じです。
apply
の第2引数で[25, 21, 18]
のようにage
の配列を指定する必要があるので、map
関数を使用して、age
の配列を取得しています。
ES2015での方法
ES2015
ではアローファンクションが使用できるので、非常にシンプルになります。
var arr = [
{
name: '一郎',
age: 25
},
{
name: '二郎',
age: 21
},
{
name: '三郎',
age: 18
}
];
console.log(Math.max(...arr.map((p) => p.age))); // 25
console.log(Math.min(...arr.map((p) => p.age))); // 18
IE8以下の対応
IE8
以下ではmap
関数が使用できませんので、独自に実装することになります。
下記のリンクで紹介しているスクリプトを組み込めば同じようにmap
関数を使用できるようになります。