['1', '2', '3'].map(parseInt) what & why ?

关于map和parseInt的函数解释developer.mozilla.org/zh-CN/docs/…

首先parseInt(string, radix) 接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数,即进制数:

function returnInt(element) {
  return parseInt(element, 10);
}

parseInt(10,0)  //10  radix为0时按十进制处理
parseInt(10,1) //NaN  最小是二进制
parseInt(10,2) //2  即2的0次方*0加2的1次方
parseInt(10,3) //3  即3的0次方*0加3的1次方

复制代码

所以第一个参数小于10的时候不能大于第二个参数,数学里的进制原理

parseInt(3,2)  //NaN  3的二进制是10
parseInt(9,8)  //NaN  9的八进制是10
复制代码

之后map

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
 // Return element for new_array 
}[, thisArg])

callback
生成新数组元素的函数,使用三个参数:
currentValue
callback 数组中正在处理的当前元素。
index可选
callback 数组中正在处理的当前元素的索引。
array可选
callback  map 方法被调用的数组。
thisArg可选
执行 callback 函数时使用的this 值。
eg:
[1,2,3].map(function(a,b,c){console.log(a,b,c)})

1 0 [1, 2, 3]
2 1 [1, 2, 3]
3 2 [1, 2, 3]
复制代码

所以题目返回的数组分别是

parseInt(1,0) //十进制  1
parseInt(2,1) //1不符合参数要求
parseInt(3,2) //二进制3是10
所以实际的结果是 [1, NaN, NaN]
复制代码

转载于:https://juejin.im/post/5ce7af2f6fb9a07ecd3d371b

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值