当map遇到parseInt

[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));

你可能感兴趣的:(当map遇到parseInt)