zoukankan      html  css  js  c++  java
  • Js笔试题之parseInt()和.map()

    parseInt()的几个例子

    var b = parseInt("01");
    alert("b="+b);
    var c = parseInt("09/08/2009");
    alert("c="+c);
    

    结果:b=1,c=0

    parseInt()用来解析字符串,返回整数,有几个特点:

    1.无视被解析字符串最前和最后的空格,即:" 111 "和"111"是一样的

    2.正规格式是parseInt(string,radix)。

    第一个参数是被解析的字符串,第二个参数是进制(可不些)

    第二个参数的特点:

    ①如果radix省略或为0,则按默认进制(十进制)进行解析

    ②radix为2~36之间的整数,如果在这个范围之外,返回NaN

    ③string的首字符为0,则默认解析为8进制。string首字符为0x(0X)则默认解析为16进制。其他情况默认为10进制。

    ④最好加上第二个参数,不然即使碰到首字符为0,应该以8进制方式进行,在某些浏览器下,如ff也会按10进制进行

    3.解析从第一个可以解析的字符开始,到第一个不能解析的字符(如空格,标点符号等)结束。后面的字符不再解析。如果第一个字符就不可以解析,则返回NaN。

    回到此题来分析

    b的首字母是0,按8进制解析后面的数值,也就是8进制的1。自然返回值为1。
    c的首字母是0,按8进制解析后面的数值,但是第二个字符9已经不是8进制数,也就是9是第一个不能解析的字符,parseInt("09/08/2009")相当于parseInt("0"),自然返回值是0
    注:8也不是8进制数,最大到7

    变形:

    var c = parseInt("0119/08/2009");
    alert("c="+c);
    

    分析:

    相当于parseInt("011"),0*8^2+1*8^1+1*8^0=0+8+1=9,输出结果为c=9
    

    parseFloat()和parseInt()

    parseInt()可以带参数,指定二进制、八进制或者十六进制(默认十进制),而parseFloat()不带参数,不能解析八进制、十六进制数,就只能按十进制进行。

    再来看parseInt()和.map()结合的例子

    ["1", "2", "3"].map(parseInt) 返回值又是多少呢
    

    map方法

    array1.map(callbackfn[, thisArg])

    对数组的每个元素,调用定义的回调函数,返回一个数组包含结果

    参数:

    array1:必须。一个数组对象

    callbackfn:必须。最多接受三个参数(数组元素的值,数组元素的索引,包含该元素的数组对象)的回调函数

    thisArg:可选。

    即原例子相当于

    [parseInt("1",0),parseInt("2",1),parseInt("3",2)]
    

     分析:

    1按十进制转换输出1
    1不在2~36之间,输出NaN
    字符串”3“里面没有合法的二进制数,输出NaN
    所以最后结果是[1,NaN,NaN]
    
  • 相关阅读:
    leetcode 350. Intersection of Two Arrays II
    leetcode 278. First Bad Version
    leetcode 34. Find First and Last Position of Element in Sorted Array
    leetcode 54. Spiral Matrix
    leetcode 59. Spiral Matrix II
    leetcode 44. Wildcard Matching
    leetcode 10. Regular Expression Matching(正则表达式匹配)
    leetcode 174. Dungeon Game (地下城游戏)
    leetcode 36. Valid Sudoku
    Angular Elements
  • 原文地址:https://www.cnblogs.com/zhangwenkan/p/4180322.html
Copyright © 2011-2022 走看看