首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Array.prototype.map的parseInt

使用Array.prototype.map的parseInt
EN

Stack Overflow用户
提问于 2017-08-12 23:08:46
回答 2查看 27关注 0票数 0

我遇到了一些奇怪的事情。

我正在尝试将一个包含时间的字符串(例如"12:00","13:30")解析为两个单独的整数。我试过这个:

代码语言:javascript
复制
timeString = "12:00"
[hours, minutes] = timeString.split(":").map(parseInt)

但是minutes以NaN的形式出现

我以为parseInt接受"00“有问题,但当我在控制台中尝试parseInt("00")时,得到的结果是0。

谁能解释一下这件事?

EN

回答 2

Stack Overflow用户

发布于 2017-08-12 23:17:01

Array#map使用三个参数调用函数:

  1. The current element
  2. The current index
  3. The array

(将当前元素索引为当前索引的数组索引)

这意味着在下面的代码片段中,使用"00"1 (这是索引)调用parseInt

代码语言:javascript
复制
timeString = "12:00"
[hours, minutes] = timeString.split(":").map(parseInt)

parseInt的第二个参数必须大于2,否则将返回NaN

这就是这里发生的事情。

为了解决这个问题,你可以使用:

代码语言:javascript
复制
timeString = "12:00"
[hours, minutes] = timeString.split(":").map(v => parseInt(v, 10))
票数 2
EN

Stack Overflow用户

发布于 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))

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45651729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档