为什么 Math.min([1,2]) 返回 NaN?

13

我已经调试了一个小时的代码,看起来Math.min([1,2])返回NaN

var int_array = [1,2]
console.log(Math.min(int_array)) //prints NaN, but expect 1
isNaN(Math.min(int_array))===true

1
console.log(Math.min.apply(Math,[1,2])) 可以工作。 - IrkenInvader
3个回答

37
Math.min() 函数实际上期望一系列数字,但它不知道如何处理一个真正的数组,因此它会崩溃。

您可以通过使用扩展运算符... 来解决这个问题:

var int_array = [1,2];
console.log(Math.min(...int_array)); // returns 1

您也可以通过 Function.apply() 函数来实现同样的功能,但它没有这么好看:

var int_array = [1,2];
console.log(Math.min.apply(null,int_array)); // returns 1

天啊,这种烦人的行为在2023年仍然存在。 - bsplosion

5
你需要将数组作为第一个参数传递给min函数。
Math.min([1,2])

来自MDN

如果至少有一个参数无法转换为数字,则结果为NaN。


0

这个

var int_array = [1,2];
console.log(Math.min.apply(null,int_array));

将在所有现代浏览器中正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接