array.split()和array.map(Number)的结果有什么区别?

时间:2018-05-09 11:00:18

标签: javascript

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)

这两个数组结果有什么区别?

3 个答案:

答案 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)

Split返回字符串,而map返回integers.below是快照。

enter image description here