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

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

作者: 励公子 | 来源:发表于2019-11-25 15:18 被阅读0次

    这道题大家应该经常会碰到,我们打印一下结果


    控制台打印

    想要彻底弄懂同类型的题,我们必须先弄懂map,parseInt

    map
    array.map(function(currentValue, index, arr), thisValue)
    

    参数解析:

    • item:第一个参数,数组中正在处理的当前元素(必选)
    • index:第二个参数,数组中正在处理的当前元素的索引(可选)
    • thisArr:第三个参数,map 方法被调用的数组(可选)
    • thisValue:对象作为该执行回调时使用,传递给函数,用作 "this" 的值(可选)
    parseInt
    // radix进制的由数字组成的字符串 string 转换为 10 进制的整数
    parseInt(string, radix)
    

    参数解析:

    • string:要被解析的字符串(必选)
    • radix:要解析的数字的基数。该值介于 2 ~ 36 之间(可选)

    radix详解:

    • 如果radix值为 0,则数字将以 10 为基础来解析
    • 如果radix小于 2 (!==0)或者大于 36,则 parseInt() 将返回 NaN
    • 没有设置该参数时,如果string以 “0x” 或 “0X” 开头,将以 16 为基数
    • 没有设置该参数时,如果 string 以 0 开头,转换为8进制或十进制
    • 没有设置该参数时,如果 string 以 1 ~ 9 开头,将以 10 为基数
    • 如果string超出radix的表示范围,则返回NaN

    实践

    ['1', '2', '3'].map(parseInt)
    // 等同于
    ['1', '2', '3'].map((item, index) => {
        return parseInt(item ,index)
    })
    parseInt('1', 0) // 1 ===> radix值为 0,则数字将以 10 为基础来解析
    parseInt('2', 1) // NaN ===> radix小于2,返回NaN
    parseInt('3', 2) // NaN ===> string超出radix的表示范围,返回NaN
    
    parseInt('10', 9) // 9 ===> 1 * 9 ^ 1 + 0 * 9 ^ 0 = 9 
    parseInt("17", 8) // 15 ===> 1 * 8 ^ 1 + 7 * 8 ^ 0 = 15
    parseInt("1f", 16) // 31 ===> 16 + 15
    parseInt(' 12x') // 12 ===> 开头和结尾的空格是允许的
    parseInt('s90') // NaN ===> 如果字符串的第一个字符不能被转换为数字,那会返回 NaN
    parseInt(' 12abc!6') // 12 ===> 只有字符串中的第一组数字会被返回
    

    相关文章

      网友评论

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

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