Javascript parseInt()/parseFloat()忽略非数值参数

Javascript parseInt()/parseFloat()忽略非数值参数,javascript,Javascript,如何在以下函数中使用parseInt或parseFloat忽略非数值参数 function highestNumber(num1, num2, num3) { var highest = Math.max(num1, num2, num3); return highest; } alert(highestNumber(26,1,109)); 我认为parseInt或parseFloat在这里没有任何用处。您可以简单地测试一个值是否为数字以及所有非数字值: ret

如何在以下函数中使用parseInt或parseFloat忽略非数值参数

 function highestNumber(num1, num2, num3) {
      var highest = Math.max(num1, num2, num3);
      return highest;
 }

 alert(highestNumber(26,1,109));

我认为
parseInt
parseFloat
在这里没有任何用处。您可以简单地测试一个值是否为数字以及所有非数字值:

return Math.max.apply(Math, Array.prototype.filter.call(arguments, function(value) {
    return typeof value === 'number';
}));
是一个类似数组的对象,其中包含传递给函数的所有参数。但由于它不是一个实际的数组,所以我们必须在它上使用数组方法

通过将数组作为第二个参数传递,可以调用参数数目未知的函数


如果您希望允许数字字符串,例如
“123”
,则可以改用
isNaN
(以及一些额外的防止
null
和空字符串的措施):


为什么要对
null
进行额外的测试?因为
Number(“”)和
Number(null)
返回
0
,所以
isNaN
将同时返回
false
(但我们仍然希望排除这些值)。

因此,如果它不是一个数字类型,您希望将其从Math.max()中排除。答案不错,但如果您解释一下会更好。我花了比我想的更多的时间来阅读。
return Math.max.apply(Math, Array.prototype.filter.call(arguments, function(value) {
    return value != null && value !== "" && !isNaN(value);
}));