クライアント側でオブジェクトの配列から最新の日付を取得するエレガントな方法は何ですか? 質問する

クライアント側でオブジェクトの配列から最新の日付を取得するエレガントな方法は何ですか? 質問する

私はプロジェクトで angularjs を使用します。

サーバーからオブジェクトの配列を取得します。各オブジェクトにはいくつかのプロパティが含まれており、そのうちの 1 つが日付プロパティです。

サーバーから取得した配列 (json 形式) は次のとおりです。

[
  {
    "Address": 25,
    "AlertType": 1,
    "Area": "North",
    "MeasureDate": "2019-02-01T00:01:01.001Z",
    "MeasureValue": -1
  },
  {
    "Address": 26,
    "AlertType": 1,
    "Area": "West",
    "MeasureDate": "2016-04-12T15:13:11.733Z",
    "MeasureValue": -1
  },
  {
    "Address": 25,
    "AlertType": 1,
    "Area": "North",
    "MeasureDate": "2017-02-01T00:01:01.001Z",
    "MeasureValue": -1
  }
          .
          .
          .
]

配列から最新の日付を取得する必要があります。

オブジェクトの配列から最新の日付を取得するエレガントな方法は何ですか?

ベストアンサー1

Date()それをきれいに行う方法は、各日付をに変換し、最大値を取ることです。

ES6:

new Date(Math.max(...a.map(e => new Date(e.MeasureDate))));

JS:

new Date(Math.max.apply(null, a.map(function(e) {
  return new Date(e.MeasureDate);
})));

aオブジェクトの配列はここにあります。

これは、配列内の各オブジェクトを の値で作成された日付にマップしますMeasureDate。次に、このマップされた配列が関数に適用され、Math.max最新の日付が取得され、結果が日付に変換されます。

文字列の日付をJS Dateオブジェクトにマッピングすると、次のようなソリューションを使用することになります。配列内の日付の最小値/最大値は?

--

あまりきれいではない解決策としては、オブジェクトを値にマッピングしMeasureDate、文字列の配列を並べ替えるだけです。これは、使用している特定の日付形式がある場合にのみ機能します。

a.map(function(e) { return e.MeasureDate; }).sort().reverse()[0]

パフォーマンスが懸念される場合は、と をreduce使用する代わりに、配列を使用して最大値を取得することをお勧めします。sortreverse

おすすめ記事