该事情的由来是来自于一个面试题,题目是这样的,[1,2,3].map(parseInt)的结果是什么?

作为菜鸟的我们一定是觉得分别把1,2,3分别交给parseInt,无非就是1,2,3嘛。其实结果输出是这样的,1,NaN,NaN,为什么会这样?

那就涉及到两个知识点了,首先map的时候,里面传一个函数,那么map会默认给函数传两个参数:value,index,那么这两个参数传给parseInt的时候,代表的意思就不一样了,parseInt函数接收两个参数第一个是要转换的字符串,第二个是代表的按几进制进行转换,注意:是按几进制进行转换,而不是转成了几进制。

那么再来看[1,2,3].map(parseInt),

第一次循环,传给parseInt(1,0),把1按0进制转换,0默认表示10进制,然后输出1。

第二次循环,传给parseInt(2,1),把2按1进制转换,引擎懵逼了,1进制中根本不可能出现2这个数字好吗?我咋给你解析,无法解析,给了个NaN。

第三次循环,传给parseInt(3,2),把3按2进制转换,引擎又懵逼了,啥玩意儿?2进制中根本不可能出现3这个数字好吗?我咋给你解析,无法解析,又给了个NaN。

parseInt第二个参数的范围是为介于2-36之间的数。

那么我如果就想把一个十进制的数,转换成固定的进制数呢?比如我想把8转换成2进制数, 应该是1000,怎么做?

那就应该使用Number.prototype.toString(radix),radix表示的也是要转成几进制,范围是介于2-36之间的数。

var a = 8; a.toString(2);或者(8).toString(2);或者Number(8).toString(2);

注意调toString的时候,必须保证调用者是Number类型,因为只有Number原型下的toString方法才支持radix转换,其他的像Object.prototype.toString,String.prototype.toString,Array.prototype.toString,Function.prototype.toString等等,都不接受参数,所以要使用该方法之前需要将调用者转成Number类型。

转载于:https://www.cnblogs.com/liujiekun/p/11321230.html

JS 进制转换的理解相关推荐

  1. 任意进制转换简单理解

    规则1:任意进制转10进制都是当前位数乘以当前位权重 规则2:N进制转M进制根据前值除/M的值,然后取M进制余数为当前位,小数位就是后乘取整;(基本就是这个思想) 首先,实现任意进制转其他进制,最好先 ...

  2. js:进制转换、保留指定位数小数、RGB/Hex颜色色值转换

    将十进制转换为二进制.八进制或十六进制 let num = 43;// 二进制 console.log(num.toString(2)); // 101011// 八进制 console.log(nu ...

  3. php中进制转换,php的进制转换

    学习了php的进制转换,有很多的知识点,逻辑,也有最原始的笔算,但是我们还是习惯使用代码来实现进制的转换,进制的转换代码有如下:二进制(bin)八进制( oct)十进制( dec)十六进制( hex) ...

  4. 进制转换—FY的蓝桥

    进制转换 基本理解 常用转换 十进制转n进制 n进制转十进制 n进制转m进制 基本理解 进制转换是一个老生常谈的东西了,进制转换是什么东西呢?就简单说一下吧: 我们生活中使用的数学是十进制 十进制的意 ...

  5. NENU进制转换课后练习题解(问题A~问题F)

    ​ 文章目录 前言:对整数进制转换的理解 1.1进制理解 1.2如何转换? 问题 A: 5201 二进制位 题目描述 参考代码 问题 B: 5202 二进制转化为十六进制 题目描述 参考代码 问题 C ...

  6. html进制转换js代码,JS中的进制转换以及作用

    js的进制转换, 分为2进制,8进制,10进制,16进制之间的相互转换, 我们直接利用 对象.toString()即可实现: 运行下面代码 //10进制转为16进制 (10).toString(16) ...

  7. js中parseInt与parseFloat在进制转换的区别

    项目中需要转换一个16进制数0x00000000000000000000000000000000000000001c0bed842bda49e0fc480000,因为考虑到可能是一个小数,所以使用了p ...

  8. 笔记:JS仿excel十进制和26进制转换算法

    笔记:JS仿excel十进制和26进制转换算法 引子:看过这篇文章用C#实现的十进制和26进制转换算法,觉得在前端以后会用到,遂改写出Javacript的写法. 十进制转26进制: function ...

  9. JS 10和16进制转换 封装

    /* * 10和16进制转换* prin 为true将10进制转为16进制* prin 为false将16进制转为10进制*/ function Sixteen_ten(str,prin){str = ...

最新文章

  1. 阿里员工发帖吐槽人不如驴:你不能一边抽我,一边问我爱不爱你?
  2. 最小最大定理 java_Java基础50道经典练习题(35)——最大最小交换
  3. pythondjango项目集成_[Python]将Wagtail整合到Django2项目中
  4. ajax获取对象获取不了属性,Ajaxing JavaScript变量到Django视图获取:AttributeError:“WSGIRequest”对象没有属性“data”...
  5. android Sqlite小记
  6. Project Euler 001-006 解法总结
  7. 服务器定期监控数据_机房环境监控的实践【斯必得智慧机房 】
  8. 在.net中读写config文件的各种方法(转)
  9. 大津二值化算法 ( Otsu's binarization ) 自动确定二值化图像时的阈值
  10. 在计算机上设置桌面,如何在计算机上设置动态桌面墙纸
  11. Python获取最新省市区列表并绘制中国地图(含港澳台)
  12. 火绒软件+软媒雷达(win10,弥补了火绒无优化内存服务)
  13. ArcGis批量裁剪栅格图层
  14. Kryo+Netty传输序列化对象
  15. bootstrap导航窗格响应式二级菜单
  16. 合肥长鑫芯片服务器,进军DDR5/GDDR6/LPDDR5内存 合肥长鑫计划第三代10nm工艺
  17. 电脑上所有浏览器都不能上网但是qq可以登陆上
  18. iphone换android手机铃声,教你在iPhone上更换自己喜欢的铃声!超简单!
  19. Linux 实现鼠标侧边键实现代码与网页的前进、后退
  20. 美国调查半导体装置专利侵权事件;“元宇宙业务”未达到Meta预期;kakao回应韩国数据中心火灾事件 | 每日大事件...

热门文章

  1. 逆向--- crackme6
  2. 控制寄存器和系统地址寄存器
  3. 算法之排列与组合算法
  4. 根据关键字检索相关视频
  5. DevOps笔记-08:DevOps追求的根本目标:多快好省
  6. ISP、IAP、ICP的区别!
  7. 数据结构:链表面试题
  8. spring19:AspectJ的初步介绍
  9. 小程序之实现滚动加载
  10. Java 工具集 Hutool 4.0.8 发布