zoukankan      html  css  js  c++  java
  • 你真的会用parseInt方法吗?

      学习前端时间不短了,最早使用parseInt这个函数已经不记得具体时间了,在我的概念里对它的使用了解是parseInt(string, radix);把string转成数字,radix参数是把数字以多少进制表示出来,一直到今天我99.99%的情况使用场景都是radix等于10,而且也没出现过什么问题。但是最近遇到一个题目['1', '2', '3', '4', '5'].map(parseInt)我竟然不能很准确的写出正确答案。所以我今天要重新学习一下这个方法了,在认真研究这个方法的时候,还没有想象中的那么容易,下面先看一下这个方法的解释

     

    radix取值范围每个具体的值对应关系是:

    2 - [0, 1],3 - [0, 1, 2],10 - [0, 1, ..., 9],11 - [0, 1, ..., 9, a], 36 - [0, ..., a, ..., Z]

    ['1', '2', '3', '4', '5'].map(parseInt)相当于['1', '2', '3', '4', '5'].map((cur, index) => parseInt(cur, index));

    cur和index的对应关系以及对结果的分析如下:

    parseInt('1', 0); // 0 和 10相当于10进制

    parseInt('2', 1); // 如果该参数小于2或者大于36,则 parseInt将返回 NaN

    parseInt('3', 2); // 2进制的取值范围是0 1没有3,所以返回NaN

    parseInt('4', 3); // 3进制的取值范围是0 1 2没有4,所以返回NaN

    parseInt('5', 4); // 4进制的取值范围是0 1 2 3没有5,所以也返回NaN

    其他情况:

    parseInt('256', 3); // 3进制的取值范围是0 1 2没有56,所以返回2

    parseInt('234', 5); // 5进制的取值范围是0 1 2 3 4,返回69

    parseInt在确定被解析的值在radix取值的范围后,还会进行最后一步计算,计算规则如下

    比如parseInt('234', 5);

    2 * Math.pow(5, 2) + 3 * Math.pow(5, 1) + 4 * Math.pow(5, 0);  // 运行结果为69

    参考链接https://www.cnblogs.com/webBlog-gqs/p/8727677.html

  • 相关阅读:
    TCP重传
    GIT常用命令参考图
    nodepad++ 快捷键加常用操作
    Django学习之manage.py使用
    Python遍历目录
    Pycharm 2017 12月最新激活码
    Python 基础之列表去重的几种玩法
    ddos cc攻击简单介绍(转)
    linux升级python版本至3
    linux解压xxx.tar.xz文件
  • 原文地址:https://www.cnblogs.com/typeof/p/12168571.html
Copyright © 2011-2022 走看看