JavaScript中map(parseInt)的问题

问题

利用map()把字符串变成整数

var arr = ['1', '2', '3'];
console.log(arr.map(parseInt));

Output:
[1, NaN, NaN]

原因

map()有三个参数:value, index, array,后两个为可选参数

  • 调用map函数时,三个参数都会传入map内的函数中
  • 在这道题中,parseInt有两个参数,字符串和进制
  • 所以,map会将value和index传入parseInt函数

实际上最终的效果是:

parseInt("1", 0);
parseInt("2", 1);
parseInt("3", 2);

解决办法

  1. Number
var arr = ['1', '2', '3'];
console.log(arr.map(Number));
  1. 自定义
var arr = ['1', '2', '3'];
console.log(arr.map((value)=>{
    return parseInt(value);
}))

补充:

有关parseInt的radix,当遇到0、undefined或未被指定时,parseInt有如下行为:
1)被转换的字符串起于"0x"/"0X" --> 十六进制转为十进制;
2)被转换的字符串起于"0" --> 八进制或十进制(由解释器决定)转为十进制;
3)被转换字符串起于其他值 --> 十进制转为十进制

猜你喜欢

转载自www.cnblogs.com/kreios/p/12679113.html
今日推荐