2016-07-19 67 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,但現在它改變到Unix時間戳,這是一個10位數字。

確定最大數量而不是日期的恰當語法是什麼?

+1

如果你只是想比較數字,那麼'返回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()電話:

return Math.max(a, b); 

然而,鑑於Math.max()可以處理任何數量的你不需要爭論使用.reduce(),可以改爲只使用.apply()通過Math.max()你與.map()生產數字數組:

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

如果REPORTED_DATE是一個Unix風格的10位數字,那麼這就是秒數,所以您需要將其倍數1000以獲得毫秒以轉換爲JavaScript Date對象。所以把它放在上下文中:

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