这让我很困惑。我不知道为什么会这样,但它正在破坏我试图创建的程序。
基本上,我有var array = []
。此array
称为words
。 words
的内容为
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,,,..."
添加额外的逗号。
答案 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 ...
如果目的是调试,请不要使用alert
但console.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假定您要分割字符串上的每个字符。当你没有传递任何东西时,它基本上是方法的默认行为。