首先,先搞明白parseInt函数和map函数的做用!!!数组
parseInt() 函数可解析一个字符串,并返回一个整数。
bash
语法:函数
parseInt(string,radix)
第一个参数:string,要解析的字符串,这没什么好说的,必选参数。ui
第二个参数:radix,可选参数,表示你要按几进制的格式来解析字符串。this
radix传参
1. 传参
要求:整数,且在2~36之间。
若radix 大于36 或者 小于2且不等于0 ,那么直接返回NaN,
若radix为0 ,则按照10进制来解析。
若radix为字符串,则把这个先parseInt,再解析。
2. 不传参
若要解析的字符串以'0x'或'0X'开头,那么以16进制解析。
其他状况按10进制解析。复制代码
实际用法:spa
// 1. 正常全解析
parseInt("123"); // 123
parseInt("489",10); // 489
parseInt("1010",2); // 10
parseInt("a01",16); // 2561 1+0+10*16*16
parseInt("0xa01"); // 2561
parseInt("123",0); // 123
parseInt("123","5"); // 38
parseInt("123","5.2"); // 38
// 2. radix不在范围内返回NaN
parseInt("123",1); // NaN
parseInt("123",37); // NaN
// 3. 因进制问题返回字符串部分解析结果
parseInt("102",2); // 2
parseInt("10ac",10); // 10
// 4. 因进制问题返回NaN
parseInt("a10",10); // NaN复制代码
注意:code
每种进制在 位上 都有它合理的取值范围,如:十进制,每一位的取值为0-9,十六进制为0-f,超出取值范围则不承认。索引
parseInt在解析字符串时,按照字符顺序一个一个检查,若是第一个字符就为超范围的值,则直接返回NaN,若不是则检查下一位,直到检查完毕或者碰到某一位值超范围,而后将检查过的不超范围的字符串解析,后面的舍弃。如:parseInt("456a23",10); 字符检查到a时,发现超出范围,则将从a之后的舍弃,只返回“456”的解析结果。字符串
map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理的后值。
string
map()方法按照原始数组元素顺序依次处理元素,它不处理空数组,也不会改变原始数组。
语法:
arr.map(function(item,index,arr),thisValue)
第一个参数为数组值循环的处理函数,每一个值都通过此函数处理,item是当前值,index是当前值得索引值,arr是当前数组,其中item为必选参数,index与arr为可选参数
实际使用:
var arr = [1,-2,3]
var newArr = arr.map((item,index)=>{
return item>0?item:-item; // 将数组元素变成正数后返回
})
newArr; // [1,2,3]
复制代码
[1,2,3].map(parseInt)
注意: 传参
parseInt做为map的处理函数,map是能够向其传递三个参数的,分别为item,index,arr
而parseInt是能够接收到两个参数的,因而乎,parseInt在接受参数时,接受了map传递过来的item和index
因此,var arr=['1','2','3']在map中每次解析其实在运行 parseInt(arr[index],index)
parseInt('1',0) // 按十进制解析 返回1
parseInt('2',1) // radix<2 返回NaN
parseInt('3',2) // 被解析字符串首个字符就不在二进制合理取值范围内,返回NaN复制代码