为了获得数字数组中的最小数字,我使用这个:
var smallestNumber = Math.min.apply(null, arrayOfNumbers.map(function(x) { return x; }));
但如果其中一个数字是 NaN,则 minimumNumber 返回 NaN。max 运算符也会发生同样的事情。(我可能有 Infinity 但我不确定它是否会被退回)
如何跳过所有的 NaN 并返回最小的数字?
为了获得数字数组中的最小数字,我使用这个:
var smallestNumber = Math.min.apply(null, arrayOfNumbers.map(function(x) { return x; }));
但如果其中一个数字是 NaN,则 minimumNumber 返回 NaN。max 运算符也会发生同样的事情。(我可能有 Infinity 但我不确定它是否会被退回)
如何跳过所有的 NaN 并返回最小的数字?
过滤掉NaN
条目:
var smallest = Math.min.apply(null, arrayOfNumbers.filter(function(n) { return !isNaN(n); }));
按照 zzzzBov 的想法,您也可以使用Array.reduce
. 这将允许您跳过将从过滤器创建的中间数组:
var minReduce = function (a, b) { return (isNaN(b) || b > a) ? a : b };
var smallest = arrayOfNumbers.reduce(minReduce, Number.MAX_VALUE);
(我只将函数单独存储在一个变量中,以使其在答案中更具可读性;您可以在 reduce 调用本身中自由使用匿名函数。)