美文网首页
['1', '2', '3'].map(parseInt) 解析

['1', '2', '3'].map(parseInt) 解析

作者: lovelydong | 来源:发表于2019-07-09 15:53 被阅读0次

    原文地址

    ['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];
    

    相关文章

      网友评论

          本文标题:['1', '2', '3'].map(parseInt) 解析

          本文链接:https://www.haomeiwen.com/subject/ecvaeqtx.html