解题步骤
需要了解Array.prototype.map()的参数是一个回调函数回调函数调用时会传递两参数返回值是一个新的数组参数一:数组元素,参数二:数组元素对应的下标了解parseInt()在传递两个参数情况下,是如何运算的Array.prototype.map()
Array.prototype.map = function (callback){ //callback是一个函数 let arr = [],i = 0 for (;i<this.length;i++){ arr.push(callback(this[i],i)); } return arr; }这差不多就是Array.prototyp.map的实现原理
所以现在重点是:parseInt(this[i],i)是怎么样的返回值
parseInt的第二个参数是,进制值,就是在第一个参数中找到符合第二个参数的数据,然后将其转换为10进制第二个参数的范围是2~36之间0 是相当于 10 的parseInt的第二个参数是,进制值,就是在第一个参数中找到符合第二个参数
parseInt(102563,8);//8进制,那么每一位数都不能大于等于8----- 102563 2.将8进制数转换为10进制数 1*8**5+0*8**4+2*8**3+5*8**2+6*8**1+3*8**0 = 32768+0+1024+320+48+3 = 34163 console.log(parseInt(102563,8));//34163 parseInt(125623,3);//3进制,那么每一位都不能大于等于3---->12 2.再将3进制的12,转换为10进制 1*3**1 + 2*3**0 = 3 + 2 = 5 console.log(parseInt(125623,3)); // 5第二个参数的范围是2~36之间,超出就返回NaN
parseInt(55,87);//NaN --->87 > 36 parseInt(88,2);//NaN ,没有一个是满足二进制的 parseInt(5,36);//5, 36不大于36 5*36**0 = 5 parseInt(10,1);//NaN第二个参数如果是0,那么相当于10
parseInt(20,0); //20 2*10**1+0*2*10**0 = 20 + 0 parseInt(50,0); //50