0

数値の配列で最小の数値を取得するには、これを使用します。

var smallestNumber = Math.min.apply(null, arrayOfNumbers.map(function(x) { return x; }));

ただし、数値の 1 つが NaN の場合、smallestNumber は NaN を返します。max 演算子でも同じことが起こります。(私はインフィニティを持っているかもしれませんが、それが返されるかどうかはわかりません)

すべての NaN をスキップして最小の数値を返すにはどうすればよいですか?

4

2 に答える 2

5

NaNエントリを除外します。

var smallest = Math.min.apply(null, arrayOfNumbers.filter(function(n) { return !isNaN(n); }));
于 2013-10-09T18:31:20.940 に答える
2

zzzzBov のアイデアに従って、 を使用してこれを行うこともできますArray.reduce。これにより、フィルターから作成される中間配列をスキップできます。

var minReduce = function (a, b) { return (isNaN(b) || b > a) ? a : b };
var smallest = arrayOfNumbers.reduce(minReduce, Number.MAX_VALUE);

(回答で読みやすくするために、関数を変数に個別に格納しただけです。reduce 呼び出し自体の中で匿名関数を自由に使用できます。)

于 2013-10-09T18:41:28.127 に答える