[“1”, “2”, “3”].map(parseInt)
在学习前端中,我遇到了这么一道题。
var a = ["1", "2", "3"].map(parseInt);
console.log(a); // [1,NaN, NaN];
下面我们看一下 map 和 parse 这两种方法
1. map
- map函数的参数是一个函数。而传入的函数里一般需要一个或者两个参数。即
var a = [1,2,3];
//一个参数
a.map(function(item){
console.log(item); // 1 2 3
})
// 两个参数
a.map(function(item,index){
// item 是值,index是下标
console.log(item + " " + index);
// 1 0 2 1 3 2
})
2. parseInt
- 用于解析字符串,并且返回一个整数
- parseInt(string, radix) 其中string是传入的字符串,必选,而radix是基数,即让转化的整数以几进制返回。
- radix:数字2-36之前的整型,默认使用10,表示十进制。这个参数的意义是指把前面的字符看作是多少进制的数字,所谓的基数。
parseInt(‘123’, 5) // 38
将’123’看作5进制数,返回十进制数38 => 15^2 + 25^1 + 3*5^0 = 38
需要注意的是,如果radix在2-36之外会返回NaN。
在没有指定基数,或者基数为 0 的情况下,JavaScript 作如下处理:
1. 如果字符串 string 以"0x"或者"0X"开头, 则基数是16 (16进制).
2. 如果字符串 string 以其它任何值开头,则基数是10 (十进制)。
3. 如果字符串 string 以"0"开头, 基数是8(八进制)或者10(十进制),那么具体是
哪个基数 由实现环境决定。ECMAScript 5 规定使用10,但是并不是所有的浏览器
都遵循这个规定。因此,永远都要明确给出radix参数的值。
运行过程:
因为parse最多接收两个参数,则
传入数组中的value和index,结果如下:
parseInt('1', 0); // 1 (规定使用10来作为基数,相当于用十进制来表示1)
parseInt('2', 1); // NaN (radix传的是1,超出了radix的界限)
parseInt('3', 2); // NaN (以二进制来表示3是不可能的,因此返回NaN)
以上就是我的讲解。
练习:
如果各位读者觉得你懂了,给你出道题吧。
var a = ["1", "2", "1", "3"].map(parseInt);
console.log(a);
会输出多少呢?