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

The*_*out 0 javascript

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

基本上,我有一个var array = [].这array叫做words.words有的内容

var words = ["apple","banana","grape","orange","kiwi","cherry", "strawberry","plum"]
Run Code Online (Sandbox Code Playgroud)

当我尝试拆分时:

var split = words.toString().split(" ");
Run Code Online (Sandbox Code Playgroud)

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

无论如何:

var split = words.toString().split("");
alert(split)
Run Code Online (Sandbox Code Playgroud)

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

编辑

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

Den*_*ret 11

words.toString()
Run Code Online (Sandbox Code Playgroud)

"apple,banana,grape,orange,kiwi,cherry,strawberry,plum"
Run Code Online (Sandbox Code Playgroud)

因为toString()在数组上构建一个可读的表示形式,用逗号分隔元素.

如果你用字符分割.split(""),你得到

["a", "p", "p", "l", "e", ",", "b", ...
Run Code Online (Sandbox Code Playgroud)

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

如果你alert这样做,那你就隐含地toString()在那个数组上做了额外的事情

"a,p,p,l,e,,,b,a ...
Run Code Online (Sandbox Code Playgroud)

如果目的是为了调试,不使用alert,但console.log(你会得到大多数浏览器访问控制台F12).

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

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