这让我有点困惑。我不知道为什么会发生这种情况,但它破坏了我正在尝试创建的程序。
基本上,我有一个 var 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,,等”
。为什么要这样做?
编辑
我不知道为什么它会在每个单词中添加 "a,p,p,l,e,,,..."
以及额外的逗号。
最佳答案
words.toString()
给出
"apple,banana,grape,orange,kiwi,cherry,strawberry,plum"
因为数组上的 toString()
构建了一个可读的表示形式,并用逗号分隔元素。
如果你用 .split("")
将其分割成字符,你会得到
["a", "p", "p", "l", "e", ",", "b", ...
请注意,其中一些元素是 ","
因为您已经分割了包含逗号的字符串。
如果你警告
它,你就隐式地在该数组上执行了一个额外的toString()
,这给出了
"a,p,p,l,e,,,b,a ...
如果目的是调试,请勿使用 alert
而是使用 console.log
(您可以在大多数浏览器上使用 F12 访问控制台)。
如果您的目标是获取包含单词所有字母的数组,您可以使用
var letters = [].concat.apply([], words.map(function(v){ return v.split('') }));
关于JavaScript split() 添加额外的逗号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30508242/