a = '1 3 2 6 1 2'.split(' ');
a = a.map(Number);
console.log(a);
a.map(Number)
显示的输出是:
Array(6)
0: 1
1: 3
2: 2
3: 6
4: 1
5: 2
length: 6
__proto__: Array(0)
和a = '1 3 2 6 1 2'.split(' ')
是:
(6) ["1", "3", "2", "6", "1", "2"]
0:"1"
1:"3"
2:"2"
3:"6"
4:"1"
5:"2"
length:6
__proto__: Array(0)
这两个数组结果有什么区别?
答案 0 :(得分:2)
在split
之后,您有一个字符串数组:["1", "2", ...]
在map
之后,您已将每个字符串转换为等效数字:[1, 2, ...]
你可以在这里看到不同之处:
var a = '1 3 2 6 1 2'.split(' ');
console.log("after split:", a);
a = a.map(Number);
console.log("after map:", a);

.as-console-wrapper {
max-height: 100% !important;
}

之所以发生这种情况,是因为map
的工作是调用您为每个条目提供的回调,并根据它返回的内容构建一个新数组。如果您使用字符串调用Number
,则会将其转换为数字(如果整个字符串无法转换为有意义的数字,则为有意义的数字或NaN
。)
答案 1 :(得分:1)
对.split()
的调用返回原始字符串中的字符串数组。随后对.map()
的调用将返回从字符串数组转换的数字数组。
Number()
构造函数在没有new
的情况下调用时,会将参数转换为数字并返回它。通过将Number
传递给.map()
,第一个数组中的字符串将被转换为数字并在第二个数组中收集。
答案 2 :(得分:1)