parseInt
-
parseInt([value]): 把VALUE转换为数字,要求VALUE是字符串(不是字符串先默认转换为字符串),从字符串左边开始查找,找到有效数字字符转换为数字(遇到一个非有效的数字字符,则停止查找)
-
parseInt([value],[radix]): 首先[VALUE]是这个字符串,他是把个值看做[RADIX](2~36)这个进制,然后最后转换为10进制的数字
=> RADIX省略或者为0,则radix默认按照10进行处理(特殊:字符串以 0x/oX 开头,RADIX默认按照16进行处理)
=> RADIX不在2~36之间,最后结果都为NaN
- parseFloat没有第二个参数
//map会返回item,index
let arr = [1, 2, 3, 4];
arr = arr.map(function (item, index) {
// console.log(item, index);
// return item * index; //=>返回结果替换数组中当前迭代的这一项
});
// console.log(arr);
arr = arr.map(parseInt);
console.log(arr);
// parseInt(1,0) =>1
// parseInt(2,1) =>NaN
// parseInt(3,2) =>NaN
// parseInt(4,3) =>NaN
把其他进制转为10进制
从个位数开始,个位数进制数的0次幂+十位数进制数的1次幂... 得到的值一次相加 ,遇到点(.) 先算整数部分,运算和整数一样,再加上小数部分,从小数的第一位开始,点后的第一位数进制数的负一次幂依次类推
任何数的0次幂都是1
任何数的负几次幂是相乘后的倒数 例如:(8^-2 = 1/(88) = 0.015625)
parseInt('2AF5', 16); //=>把'2AF5'当做16进制,最后转换为10进制
// 5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3
//5*1 + 15*16 + 10*16*16 + 2*16*16*16 = 10997
//72.45 =>8进制转为10进制
'72.45'
//=> 2 * 8^0 + 7 * 8^1 + 4 * 8^-1 + 5 * 8^-2
//=> 2*1 + 7*8 + 4*(1/8) + 5*(1/(8*8))
58.578125
parseInt('231', 3);
// 3进制只能是 0~2 所以查找到3的时候,发现已经不是3进制的范畴了,则不再继续查找
// 把2当做3进制,最后转换为十进制
// 2*3^0 = 2
parseInt('23461', 5);
// '234' 看做 5进制,转换为10进制
// 4+3*5+2*5*5 = 69
parseInt 和parseFloat区别
都是把字符串转为数字的,和传统的Number区别是,把一个字符串按着从左往右的顺序依次查找的把有效数字找到转换为数字的。区别是
- 默认只传递一个值的时候,float多识别一个小数点
- parseInt 支持进制转换,parseFloat不支持