目录
这个题用到了数组的map方法、parseInt方法以及二进制的知识
-
map()
方法
map()
方法创建一个新数组,会遍历原数组,返回一个处理之后的新数组
const array1 = [1, 4, 9, 16];
// Pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]
//可以接受两个参数
//item是每一项
//index是每一项的索引
const map1 = array1.map((item,index)=>{
return item*2 + index*1
})
-
parseInt(string, radix)
parseInt(string, radix) 解析一个字符串并返回指定基数的十进制整数,radix
是 2-36 之间的整数,表示被解析字符串的基数。
接收两个参数
第一个参数:
要被解析的值。如果参数不是一个字符串,则将其转换为字符串 (使用 ToString抽象操作)。字符串开头的空白符将会被忽略。
第二个参数:
从 2
到 36
的整数,表示进制的基数。例如指定 16
表示被解析值是十六进制数。如果超出这个范围,将返回 NaN
。如果没有传或者为0,默认为10进制,
当第一个参数以 ‘ 0x ’ 开头 按照16进制处理
如果为 0 开头 按照8进制处理, ES5之后取消了这个规则
‘A’在16进制里面 为10, ‘F’在16进制中不存在
-
进制
十进制整数转换为二进制整数:
采用:除2取余,逆序排列
二进制整数转换为十进制整数:
采用:全权相加,从0位开始数,
总结:
有了以上的基础我们可以把代码按顺序详细分解
const arr = ['1','2','3']
const result = arr.map((item,index)=>{
return parseInt(item, index)
}
)
result为一个数组
所以map遍历的顺序为
1. parseInt(1,0)
2. parseInt(2,1)
3. parseInt(3,2)
所以结果为 result = 【 1,NaN,NaN 】