2017-07-31 11 views
1

私は、エポック時間の配列を比較するJavaScriptのコードを作成しようとしています(これは大きな整数です)。 、時間値。Javascript:Math.min()はNaNを返します

これは私が今までに書いたものですが、実行すると「NaN」を返します。

var times = [1501502460000,1501497900000,1501498920000,1501493700000]; 
lowestTime = Math.min(times); 

Math.max()ではなくMath.min()を使用しています。

答えて

9

あなたはMath.min()は値の配列を処理したい場合は、あなたが.apply()を使用する必要があります。

var lowestTime = Math.min.apply(Math, times); 

ます。また、新しいっぽいスプレッドの構文を使用することができます。

var lowestTime = Math.min(... times); 

が、そのすべての環境で動作するわけではありません。

配列を直接渡すときには、まずMath.min()は、それが期待するものであるため数字に変換しようとします:個々の数字。それが起こると、結果として得られる値はNaNになります。

+0

これは、 'Math.min'が配列としてパラメータを取らないためです。コンマで区切られたn個のパラメータのリストをとります。なぜなら、 '.apply()'と '...'が動作するのは、配列をコンマで区切った値のリストに変換するからです。 – mhodges

関連する問題