1、[“1“, “2“, “3“].map(parseInt)

1、先看map方法

map返回一个新数组,其结果是数组中每个元素调用回调函数后返回的结果

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

可以看到callback接口三个参数

  • currentValue是数组中正在处理的当前元素的值
  • index是正在处理的当前元素的下标
  • arr是map方法被调用的数组
const arr = [1, 2, 3];
arr.map((num) => num + 1);
// [2, 3, 4]

2、在看parseInt方法

parseInt() 函数解析一个字符串参数,并返回一个制定基数的整数,

parseInt(string, radix)

接受两个参数

  • string是当前要解析的字符串
  • radix 要解析的数字的基数介于2-36之间,为undefined,0或没有指定的情况下将做如下处理:
  1. 如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
  2. 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
  3. 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

radix为n 会把第一个参数看做是一个数的n进制表示,而返回的值是十进制

如果被解析的参数的第一个字符无法被转化成数值类型,则返回NaN,第一个字符部位数字或者大于进制数就返回NaN

3、在看当前的语句

实际执行的结果是:

['1', '2', '3'].map((item, index, arr) => {
    return parseInt(item, index);
})

即返回的值为:

parseInt('1', 0) // 十进制 返回0
parseInt('2', 1) // radix是介于2-36 基数1无效无法解析所以返回 NaN
parseInt('3', 2) // 3在二进制中是一个非法的数值 NaN

最后的结果是 [1, NaN, NaN]

4、进制的转换规则

假设 n 为进制,1ND 为第一位数,2ND 为第二数(以此类推),result 为结果,二位数的转换规则如下:

result => 1ND * n ^ 1 + 2ND * n ^ 0 = 3

js 语法如下:

1ND * Math.pow(n,1) + 2ND * Math.pow(n,0) 

假设 n 为进制,result 为结果,三位数的转换规则如下:

result => 1ND * n ^ 2 + 2ND * n ^ 1 + 3ND * n ^ 0 = 3

js 语法如下: 

1ND * Math.pow(n,2) + 2ND * Math.pow(n,1) + 3ND * Math.pow(n,0) 

假设 n 为进制,result 为结果,四位数的转换规则如下:

result => 1ND * n ^ 3 + 2ND * n ^ 2 + 3ND * n ^ 1 + 4ND * n ^ 0= 3

js 语法如下:

1ND * Math.pow(n,3) + 2ND * Math.pow(n,2) + 3ND * Math.pow(n,1) + 4ND * Math.pow(n,0) 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值