zukucode
主にWEB関連の情報を技術メモとして発信しています。

JavaScript オブジェクト配列の要素で最大値を取得する

JavaScript 配列の要素で最大値・最小値を取得するで配列の要素の最大値・最小値を取得する方法を紹介しました。

今回はオブジェクトの配列の場合に要素の最大値・最小値を取得します。

以下のようなオブジェクトの配列があったときに、年齢の最大値(Max(age))を取得します。SQLGROUP 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.applyJavaScript 配列の要素で最大値・最小値を取得するで紹介した方法と同じです。

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関数を使用できるようになります。

Array.prototype.map() - JavaScript | MDN


関連記事