字符串数组的奇怪Javascript行为
有人用JavaScript指出了这个奇怪的数组结果,我希望有人能解释为什么会发生这种情况 如果我有这样一个数组:字符串数组的奇怪Javascript行为,javascript,Javascript,有人用JavaScript指出了这个奇怪的数组结果,我希望有人能解释为什么会发生这种情况 如果我有这样一个数组: var arr = ["10", "10", "10", "10"]; 我试着把这些“10”映射成这样的整数: arr.map(parseInt); 结果将是一个值为:[10,NaN,2,3]的数组(我在Chrome的控制台中运行了所有这些代码) 我希望结果是:[10,10,10,10] 我知道JavaScript可以将字符串中的整数解析成不同的编号系统,比如二进制,我认为这可以
var arr = ["10", "10", "10", "10"];
我试着把这些“10”映射成这样的整数:
arr.map(parseInt);
结果将是一个值为:[10,NaN,2,3]的数组(我在Chrome的控制台中运行了所有这些代码)
我希望结果是:[10,10,10,10]
我知道JavaScript可以将字符串中的整数解析成不同的编号系统,比如二进制,我认为这可以解释2和3三的来源。但是为什么parseInt会改为在不同的基础上解析它们呢?有人能解释一下为什么我会得到这个结果吗?阅读上的手册页,它包含两个参数。一个值和一个基数
发送三个参数:currentValue、index、array
改用编号
["10", "20"].map(Number)
接受接受接受3个参数的回调:
parseInt
传递到map
时,您基本上会得到以下调用:
parseInt(arr[0], 0); // if 0, same as default
parseInt(arr[1], 1); // Parse as base 1
parseInt(arr[2], 2); // Parse as base 2 or binary
parseInt(arr[3], 3); // Parse as base 3
一种更简单、更有效的方法是使用:
var arr=[“10”、“10”、“10”、“10”、“23”、“74”];
控制台日志(arr.map(编号))代码>您会看到这种奇怪的行为,因为实际的Parseint将第二个值视为基数
ParseInt语法:
parseInt(字符串,基数)
developer.mozilla.org中解释了这种行为
供参考
它是这样工作的:
var arr = ["10", "10", "10", "10"];
var newArr = arr.map(function(num){
return parseInt(num);
});
console.log(newArr);
换句话说,parseint(“10”,0)=10,parseint(“10”,1)=NaN,parseint(“10”,2)=2,parseint(“10”,3)=3
这是对函数的简单误解。