这似乎有效,在一个看起来像数字的字符串数组中(它们是用csv-parse
读入的CSV文件中的数字,它似乎将所有内容转换为字符串):
var a = ['123.1', '1234.0', '97.43', '5678'];
Math.max.apply(Math, a);
返回5678
。
Math.max
会自动将字符串转换为数字吗?
或者,我应该先自己进行+
转换以确保安全吗?
答案 0 :(得分:11)
Math.max会自动将字符串转换为数字吗?
引用Math.max
,
给定零个或多个参数,在每个参数上调用
ToNumber
并返回最大的结果值。
因此,内部所有值都会在找到最大值之前尝试转换为数字,并且您不必将字符串显式转换为数字。
但如果字符串不是有效数字,请注意NaN
结果。例如,如果数组有一个像这样的无效字符串
var a = ['123.1', '1234.0', '97.43', '5678', 'thefourtheye'];
console.log(Math.max.apply(Math, a));
// NaN
答案 1 :(得分:2)
如果任何字符串不是数字,您将获得NaN
,否则它应该可以正常工作。我只是为了安全而添加+
。
答案 2 :(得分:2)
考虑这种情况:
<script>
var a=['123.1', '1234.0', '97.43', '5678','0 11111111'];
console.log(Math.max.apply(Math, a));
</script>
你需要从数组中转换元素才能更安全..