# parseInt的处理规则

# 例题

parseInt(26, 2) => NaN  "因为2 6都不属于2进制的数字"

let arr = [10. 18, 0, 10, 25, 23]
arr = arr. map(parseInt); 
console. log(arr) => [10, NaN, 2, 2, 11]

# 例题的解题思路

arr = arr. map((item, index) => {
  // 循环遍历数组中的某一项就会触发回调函数
  // 每一次还会传递当前项和当前项的索引
})

parseInt('10. 18', 0(10))
  从字符串左侧第一个字符开始查找,找到符合[radix]进制的值(遇到一个不合法的,则停止查找)
  把找到的值变为数字,再按照吧[radix]转换成为十进制的规则处理
  ‘10-> 10

parseInt('0', 1)
  => NaN

parseInt('10', 2)
 '10' -> 10 把它看成2进制,最后转换为10进制
  1*2^1 + 0*2^0 => 2

parseInt('25', 3)
  '2' -> 2 把它看成3进制,最后转换为10进制
  2*3^0 => 2

parseInt('23', 4)
  '23' -> 23 把它看成4进制,最后转换为10进制
  2*4^1 + 3*4^0 => 11

# parseInt的处理规则

parseInt([value], [radix])
-> [radix]这个值是一个进制,不写或者写0默认都按照10处理
  (特殊情况: 如果value是以0x开头,则默认值不是10而是16)
-> 进制有一个取值的范围:2~36之间,如果不在这之间,整个程序运行的结果一定是NaN
->[value]看做[radix]进制,最后把[radix]进制转化为十进制

把一个值转换为十进制
[位权值:每一位的权重,个位是0,十位是1... 以此类推]

147(八进制) => 十进制
1*8^2 + 4*8^1 + 7*8^0

12. 23(四进制) => 十进制

1*4^1 + 2*4^0 + 2*4^-1 + 3*4^-2