我遇到了一些奇怪的事情。
我正在尝试将一个包含时间的字符串(例如"12:00","13:30")解析为两个单独的整数。我试过这个:
timeString = "12:00"
[hours, minutes] = timeString.split(":").map(parseInt)但是minutes以NaN的形式出现
我以为parseInt接受"00“有问题,但当我在控制台中尝试parseInt("00")时,得到的结果是0。
谁能解释一下这件事?
发布于 2017-08-12 23:17:01
Array#map使用三个参数调用函数:
(将当前元素索引为当前索引的数组索引)
这意味着在下面的代码片段中,使用"00"和1 (这是索引)调用parseInt:
timeString = "12:00"
[hours, minutes] = timeString.split(":").map(parseInt)parseInt的第二个参数必须大于2,否则将返回NaN。
这就是这里发生的事情。
为了解决这个问题,你可以使用:
timeString = "12:00"
[hours, minutes] = timeString.split(":").map(v => parseInt(v, 10))发布于 2017-08-12 23:16:27
parseInt接受两个参数,parseInt(numberOrString, numberBase)可用于二进制字符串、十六进制字符串等。.map接受一个回调,前两个参数为.map(item, index)。所以基本上你是在调用返回NaN的parseInt("00", 1)。
将代码更改为timeString = "12:00" var [hours, minutes] = timeString.split(":").map(i => parseInt(i))
https://stackoverflow.com/questions/45651729
复制相似问题