javascript - 为什么 math.max() 在整数数组上返回 NaN?

标签 javascript arrays math max nan

我试图从一个简单数组中获取最大数:

data = [4, 2, 6, 1, 3, 7, 5, 3];

alert(Math.max(data));

我读到即使数组中的一个值无法转换为数字,它也会返回 NaN,但在我的例子中,我已经用 进行了双重检查typeof 以确保它们都是数字,那么我的问题是什么?

最佳答案

您的代码不起作用的原因是因为 Math.max 期望每个参数都是有效数字。这在 documentation 中指示如下:

If at least one of arguments cannot be converted to a number, the result is NaN.

在您的实例中,您只提供了 1 个参数,并且 1 个值是一个数组而不是一个数字(它不会检查数组中的内容,它只是知道它不是一个有效的数)。

一种可能的解决方案是通过传递参数数组来显式调用该函数。像这样:

Math.max.apply(Math, data);

这实际上与您手动指定没有数组的每个参数相同:

Math.max(4, 2, 6, 1, 3, 7, 5, 3);

正如您所见,每个参数现在都是一个有效数字,因此它将按预期工作。

展开数组

您也可以spread the array .这实质上将数组视为每个项目都作为其自己的参数传递。

Math.max(...data);

关于javascript - 为什么 math.max() 在整数数组上返回 NaN?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32647149/

相关文章:

php - jquery:可以使用 serialize() 创建带有嵌套数组的 GET 字符串吗?

math - 在 Mathematica 中生成拓扑空间图

javascript - $_GET 停止用于删除记录

c - 我如何将结构作为元素传递到 C 中的数组中

java - 如何在字符串数组中查找 ArrayList 项的索引

javascript - 如何在ajax post上传递对象数组作为参数

java - 是地球表面上多边形内部或外部的点

算法:找到最小倍数

javascript - 滚动时更改固定标题

javascript - 使用包含 Django 的图像将 HTML 渲染为 PDF