当map遇到parseInt
2018-11-14 本文已影响0人
luu
[1,4,9].map(Math.sqrt)
// [1, 2, 3]
['1','2','3'].map(parseInt)
//预期 [1, 2, 3]
//结果 [1, NaN, NaN]
回调函数Array.map
有3个参数 map (当前正在遍历的元素, 元素索引, 原数组本身)
parseInt
有两个参数 parseInt(元素,进制数)。parseInt
把传过来的索引值当成进制数来使用从而返回了NaN
parseInt('1', 0); // OK - gives 1
parseInt('2', 1); // FAIL - 1 isn't a legal radix
parseInt('3', 2); // FAIL - 3 isn't legal in base 2
可以写进函数:
['1','2','3'].map(function(num) { return parseInt(num, 10); });
或者使用箭头函数:
['1','2','3'].map(num => parseInt(num, 10));