['1', '2', '3'].map(parseInt);
parseInt(string, radix)
接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数。
radix 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
['1', '2', '3'].map(parseInt);
对于每个迭代map, parseInt()传递两个参数: 字符串和基数。
所以实际执行的的代码是:
['1', '2', '3'].map((item, index) => {
return parseInt(item, index)
})
即返回的值分别为:
parseInt('1', 0) // 1
parseInt('2', 1) // NaN
parseInt('3', 2) // NaN, 3 不是二进制
所以['1', '2', '3'].map(parseInt);===》[1,NaN,NaN];
同样 经典面试题['10','10','10','10','10'].map(parseInt);就简单了;
parseInt('10', 0) // 10
parseInt('10', 1) // NaN
parseInt('10', 2) // 2,
parseInt('10', 3) // 3,
parseInt('10', 4) // 4,
所以['10','10','10','10','10'].map(parseInt)===》[10,NaN,2,3,4];
网友评论