我试过了:
var maxnumber = Math.max([aantalkeerspeer, aantalkeerzwaard, aantalkeerscout, aantalkeerzc, aantalkeerkata]);
和
var maxnumber = Math.max(aantalkeerspeer, aantalkeerzwaard, aantalkeerscout, aantalkeerzc, aantalkeerkata);
两个都没有工作,我只是得到了NaN。我怎么能这样做?
答案 0 :(得分:2)
Math.Max
返回NaN
。请确保所有都是数字
答案 1 :(得分:1)
Math.max
的语法是
Math.max([value1 [,value2,...]])
如果没有给出参数,结果是 - 无穷大。
如果至少有一个参数无法转换为数字,则结果为NaN。 <子> (MDN) 子>
根据所描述的语义,您的第一个approch不正确,因为您将一个数组作为参数传递,如果可转换为数字,则只返回其值,因为缺少任何其他可能更大的值
然而,您可以使用Function.prototype.apply
将一组数字作为参数传递给Math.max
。
e.g。
var m = 42;
Math.max.apply (null,[1,2,m,3,4,5]) //42 =>
Math.max (1,2,m,3,4,5) //42
由于您的两个版本都失败了,
它表明您传递的其中一个变量无法转换为数字,因此结果为NaN
请注意,传递的变量不一定必须是类型编号,只要它可以转换为1即可。 例如以下示例返回3
Math.max ({valueOf: function () { return 1; }},{valueOf: function () {return 3;}}); // 3
答案 2 :(得分:0)
Math.max()
函数将仅检查数字组的最大值,而不是字符串。那只有你回答NaN。
答案 3 :(得分:0)
我知道这是一个很晚的答案,但这是给那些正在寻找这个问题的人的。以我的拙见,其余的答案对于像我这样的初学者来说要么是不完整的,要么是有点令人困惑。问题在于变量是字符串,在Math.max()
中不起作用。就我个人而言,parseInt()
对我有用,它基本上是将字符串转换为整数。您也可以使用parseFloat()
将其转换为带小数的数字。另外,Number()
可以将两者都转换,尽管如果文本输入字符串,它将返回NaN。
在此提供示例:
<p id="display"></p>
<input id="firstone" type="number"></input>
<input id="secondone" type="number"></input>
<input id="thirdone" type="number"></input>
<br>
<button onclick="biggestnum();">Which is the biggest?</button>
<script>
function biggestnum(){
var input1 = document.getElementById("firstone").value;
var input2 = document.getElementById("secondone").value;
var input3 = document.getElementById("thirdone").value;
var x = parseInt(input1, 10)
var y = parseInt(input2, 10)
var z = parseInt(input3, 10)
var maximum = Math.max(x, y, z);
document.getElementById("display").innerHTML = maximum;
}
</script>
这基本上允许输入到输入中的数字在Math.max()
中运行。关于parseInt()
和parseFloat()
的另一点重要注意事项是,您必须指定数字基数(通常为10)。