每日一题12/18之数据类型转换

let arr = [27.2,0,'0013','14px',123];
arr = arr.map(parseInt);
console.log(arr);

知识点

把其它的数据类型转换为number类型

  • 隐式转换:
    例如:==比较、数学运算(+不仅仅是数学运算,还有字符串拼接)
  • 显式转换方案:
    Number([val]) -> 隐式转换一般调取的都是这个方法 「浏览器有自己的特殊处理,针对于每一种情况都有详细的规则」
    parsetInt/parseFloat([val])
  •   parsetInt([val],[radix])处理机制
    
  •     [val] 必须是一个字符串,如果不是,则也要默认转换为字符串
    
  •     [radix]不设置(或者写的是零):正常都是按照10处理的,如果字符串是以”0x“开始的,默认值是16
    
  •     先在[val]中,找到所有符合[radix]进制的内容(从左到右查找,直到遇到不符合的为止「不论后面是否还有符合进制的,都不在查找了」),然后再把找到的内容看做[radix]进制,转换为十进制
    
  •   [radix]范围  2~36,除了0以外(0->10/16),不在这个范围内,结果都是NaN
    

举例
parseInt(‘12px’) -> parseInt(‘12px’,10) -> 在字符串中找到所有符合10进制的内容 ‘12’ -> 最后把’12’当做看做10进制,转换为10进制 -> 12
parseInt(‘12px’,1) -> NaN
console.log(parseInt(null)); //->parseInt(‘null’,10) -> NaN

分析过程:

parseInt(27.2,0)
parseInt(‘27.2’) -> 27
parseInt(0,1)
NaN
parseInt(‘0013’,2)
‘001’ 看做2进制 转换为10进制
12^0 -> 1
parseInt(‘14px’,3)
‘1’ 看做3进制 转换为10进制
1
3^0 -> 1
parseInt(123,4)
parseInt(‘123’,4)
‘123’ 看做4进制 转换为10进制
34^0 + 24^1 + 1*4^2 -> 3+8+16 -> 27
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值