在chrome中使用lodash(截止到今天)。
_.map("0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0".split(":"), parseInt);
我得到:
[0, NaN, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
好像是基本操作。
如果您已经在使用Lodash,通常比较安全的做法是将本地方法替换为Lodash方法。
在这种情况下,我将使用_.parseInt
而不是just parseInt
,因为后者可能会产生意外的结果(在这里就是这种情况)。
预期的工作如下:
_.map("0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0".split(":"), _.parseInt);
如果您对“ vanilla”方法为何parseInt
返回感到好奇NaN
,我相信正在发生的事情如下:
_.map(collection, iteratee)
,iteratee
实际上会使用以下三个参数来调用:(item, index, collection)
。来源在这里。parseInt
,第二个参数是一个基数,该基数确定应使用哪个基数来解析整数(二进制,八进制,十进制,十六进制等)。因为iteratee是用三个参数调用的,所以这弄乱了您的基数并返回NaN
。有关MDN如何工作的说明,请参见此处parseInt
。_.parseInt()
通过添加后卫来避免该问题。通常可以安全地假设Lodash使用这样的防护来保护其方法,以确保您可以在其他Lodash方法中以迭代方式使用它们。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句