2016-07-19 5 views
0

は、私は最大の日付を決定し、以下の機能を持っている私のノードのスクリプトで:node.jsを使って最大数を計算するには?

if (result.rows.length > 0) { 
    var maxDate = new Date(
     result.rows.map(o => o.REPORTED_DATE).reduce(function(a, b) { 
      return Math.max(a, Date.parse(b)); 
     }) 
    ); 
} 

REPORTED_DATEは日でしたが、今では10桁の数字ですUnixエポックに変更しました。

日付ではなく最大数を決定する正しい構文は何ですか?

+1

数字を比較したいだけなら、 'return Math.max(a、b)'はそれをするでしょうか?または '.reduce()'をスキップし、 'Math.max.apply(null、result.rows.map(o => o.REPORTED_DATE))'を呼び出すだけです。 – nnnnnn

+0

Math.max.apply(null、result.rows.map(o => o.REPORTED_DATE))が私のために働いていました。ソリューションとして受け入れることを嬉しく思います。 –

+0

あなたが始めているデータ形式を正確に表示してください。最大値を見つける最良の方法についてもっと正確にすることができます。 – jfriend00

答えて

1

REPORTED_DATEは今の数であるなら、あなたは単にあなたの既存の.reduce()関数内Date.parse()呼び出し取り除くことができる必要があります:Math.max()はあなたが必要としない任意の数の引数を扱うことができることを考えると、しかし

return Math.max(a, b); 

.reduce()を使用するために、あなたの代わりにあなたが.map()で生産している数字のMath.max()配列を渡す.apply()を使用することができます。

Math.max.apply(null, result.rows.map(o => o.REPORTED_DATE)) 

REPORTED_DATEがUnixスタイルの10桁の数字の場合は秒数なので、JavaScript Dateオブジェクトへの変換にはミリ秒単位で1000を掛ける必要があります。文脈でそれをまとめる:

if (result.rows.length > 0) { 
    var maxDate = new Date(
     Math.max.apply(null, result.rows.map(o => o.REPORTED_DATE)) * 1000 
    ); 
} 
関連する問題