JavaScript split()添加额外的逗号?

时间:2015-05-28 13:39:24

标签: javascript

这让我很困惑。我不知道为什么会这样,但它正在破坏我试图创建的程序。

基本上,我有var array = []。此array称为wordswords的内容为

var words = ["apple","banana","grape","orange","kiwi","cherry", "strawberry","plum"]

当我尝试将其拆分为:

var split = words.toString().split(" ");

它正确地分割每个单词("apple,banana,etc")。

但是在做:

var split = words.toString().split("");
alert(split)

给了我"a,p,p,l,e,,,b,a,n,a,n,a,,,g,r,a,p,e,,, etc"。为什么要这样做?

修改

我不知道为什么每个单词都会为"a,p,p,l,e,,,..."添加额外的逗号。

3 个答案:

答案 0 :(得分:11)

words.toString()

给出

"apple,banana,grape,orange,kiwi,cherry,strawberry,plum"

因为数组上的toString()使用逗号分隔元素构建可读表示。

如果您使用.split("")将其拆分为字符,则

["a", "p", "p", "l", "e", ",", "b", ...

请注意,其中一些元素是",",因为您已拆分包含逗号的字符串。

如果你alert,那么你就会隐含地对该数组执行额外的toString(),这会给出

"a,p,p,l,e,,,b,a ...

如果目的是调试,请不要使用alertconsole.log(您可以在大多数浏览器上使用F12访问控制台)。

如果您的目标是获得包含所有字母的数组,则可以使用

var letters = [].concat.apply([], words.map(function(v){ return v.split('') }));

答案 1 :(得分:1)

在数组上使用.toString()时,它会返回一个字符串,其中所有值都以逗号分隔。

使用.split(" ")时。它没有拆分任何东西,因为你的字符串中没有空格。它返回一个包含单个值的数组。

使用.split("")时,它会分割每个字符。这将创建一个包含所有字符的数组,包括添加的逗号.toString()。所以当你这样做时:

var split = words.toString().split("");

它为您提供了这个数组:["a","p","p","l","e",",""b", etc

在此数组上调用.toString()会返回结果。

答案 2 :(得分:0)

第一个split(words.toString().split(" "))试图将words.toString() apple,banana,grape,orange,kiwi,cherry,strawberry,plum的结果与空格分开,因为它找不到任何空格,它返回一个整数的数组字符串。

第二次拆分,var split = words.toString().split("");您没有传递任何分割方法,因为在javascript " """中不一样。因此,当您将""传递给split方法时,javascript假定您要分割字符串上的每个字符。当你没有传递任何东西时,它基本上是方法的默认行为。