Array.map + 百分比
Array.map + parseInt
var timeSplit = timeCaption.innerText.trim().split(' ');
将产生 ["10:00", "–", "18:00"]
的数组
var startStr = timeSplit[0].split(':');
将产生 ["10", "00"]
的数组
var res = startStr.map(parseInt);
将产生 [10, NaN]
的数组
然而
var res = startStr.map(function (x) {
return parseInt(x);
});
工作正常,将产生 "expected" 数组 [10, 0]
我希望每个字符串都传递给 parseInt
,其中 returns 是正确的整数值(单独执行此操作也会产生正确的结果,就像工作代码一样)。
我在这里错过了什么?
编辑:我本人投票决定关闭这个问题。很明显的错误。谢谢大家!
parseInt
的第二个参数是基数或基数(如 10、16 等,默认为基数 10)。 .map
将两个参数传递给回调,该索引处的值以及索引。所以你正在调用 parseInt(10, 0)
试图找出基数 0 中的 10.
parseInt
接受 2 个参数:
- 待解析的字符串
- 基数
.map
使用 3 个参数调用您的函数:
- 价值
- 指数
- 数组
如果你仔细想想,
parseInt("00", 1)
并没有真正意义,它 returns NaN
。 parseInt
接受 2 到 36 之间的基数。
.map()
使用 3 个参数调用函数:数组元素、数组索引和数组。 parseInt
接受 2 个参数:要解析的字符串和解析它的基数。
所以 startStr.map(parseInt)
正在呼叫:
parseInt("10", 0, startStr);
parseInt("00", 1, startStr);
显然 parseInt()
将 radix = 0
视为无基数,因此它默认为基数 10。但是 radix = 1
根本没有任何意义,因此它 returns NaN
.
var timeSplit = timeCaption.innerText.trim().split(' ');
将产生 ["10:00", "–", "18:00"]
var startStr = timeSplit[0].split(':');
将产生 ["10", "00"]
var res = startStr.map(parseInt);
将产生 [10, NaN]
然而
var res = startStr.map(function (x) {
return parseInt(x);
});
工作正常,将产生 "expected" 数组 [10, 0]
我希望每个字符串都传递给 parseInt
,其中 returns 是正确的整数值(单独执行此操作也会产生正确的结果,就像工作代码一样)。
我在这里错过了什么?
编辑:我本人投票决定关闭这个问题。很明显的错误。谢谢大家!
parseInt
的第二个参数是基数或基数(如 10、16 等,默认为基数 10)。 .map
将两个参数传递给回调,该索引处的值以及索引。所以你正在调用 parseInt(10, 0)
试图找出基数 0 中的 10.
parseInt
接受 2 个参数:
- 待解析的字符串
- 基数
.map
使用 3 个参数调用您的函数:
- 价值
- 指数
- 数组
如果你仔细想想,
parseInt("00", 1)
并没有真正意义,它 returns NaN
。 parseInt
接受 2 到 36 之间的基数。
.map()
使用 3 个参数调用函数:数组元素、数组索引和数组。 parseInt
接受 2 个参数:要解析的字符串和解析它的基数。
所以 startStr.map(parseInt)
正在呼叫:
parseInt("10", 0, startStr);
parseInt("00", 1, startStr);
显然 parseInt()
将 radix = 0
视为无基数,因此它默认为基数 10。但是 radix = 1
根本没有任何意义,因此它 returns NaN
.