Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript split()是否添加额外的逗号?_Javascript - Fatal编程技术网

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

JavaScript split()是否添加额外的逗号?,javascript,Javascript,这让我有点困惑。我不知道为什么会发生这种情况,但它破坏了我正在尝试创建的程序 基本上,我有一个var数组=[]。这个数组称为单词文字的内容为 var words = ["apple","banana","grape","orange","kiwi","cherry", "strawberry","plum"] 当我尝试将其拆分为: va

这让我有点困惑。我不知道为什么会发生这种情况,但它破坏了我正在尝试创建的程序

基本上,我有一个
var数组=[]
。这个
数组
称为
单词
<代码>文字的内容为

var words = ["apple","banana","grape","orange","kiwi","cherry", "strawberry","plum"]
当我尝试将其拆分为:

var split = words.toString().split(" ");
它正确地拆分每个单词(
“苹果、香蕉等”

但是:

var split = words.toString().split("");
alert(split)
给我
“a,p,p,l,e,,,b,a,n,a,g,r,a,p,e,,,等等”
。为什么要这样做

编辑 我不知道为什么它会在每个单词中添加带有额外逗号的“
”a,p,p,l,e,,,,…”

words.toString()
给予

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

如果您使用
.split(“”
)将其拆分为字符,您将得到

["a", "p", "p", "l", "e", ",", "b", ...
请注意,其中一些元素是“
”、“
”,因为您拆分了一个包含逗号的字符串

如果您
alert
it,您将在该数组上隐式执行一个额外的
toString()
,这将

"a,p,p,l,e,,,b,a ...
如果目的是调试,不要使用
alert
,而是使用
console.log
(在大多数浏览器上,您可以使用F12访问控制台)

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

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

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

当您使用
.split(“”)时。它不会分割任何内容,因为字符串中没有空格。它返回一个只有一个值的数组

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

var split=words.toString().split(“”)

它给你这个数组:
[“a”、“p”、“p”、“l”、“e”、“e”、“b”等

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

第一次
拆分(words.toString().split(“”)
正在尝试拆分转换
words.toString()的结果
苹果、香蕉、葡萄、橘子、猕猴桃、樱桃、草莓、李子都是带有空格的,因为它找不到任何空格,所以返回一个包含整个字符串的数组


第二次拆分,
var split=words.toString().split(“”;
您没有将任何内容传递给split方法,因为在javascript
中,
是不同的。所以当您传递
拆分方法javascript假定您要拆分字符串上的每个字符。基本上,当您不向其中传递任何内容时,这是该方法的默认行为。

这里真正让您困惑的是什么?这里没有空字符,但有一些逗号。更新了问题;我不知道为什么它会添加额外的逗号。您到底在做什么ying to do?事实上,
words.toString().split(“”;
无法正常工作,因为它会为您提供
[“苹果,香蕉,…”]
(长度为1的数组)。不要使用
alert
进行调试!请尝试使用
console.log
进行调试。您没有多余的逗号!您将数组转换为一个字符串,这样您就有了:苹果、香蕉、葡萄、橙、猕猴桃、樱桃,然后您将每个字符拆分为a、p、p、l、e、、b、a、n、a、n、a、、g、r、a、p、e、、谢谢。它不会让我在10分钟内接受答案,所以那么我就接受它。我必须这样做,因为
words.split(“”
给我
单词。split不是一个函数
你会得到这个消息,因为
split
字符串
而不是
数组
的函数-顺便说一句,for split表示“如果分隔符是空字符串,则str将转换为字符数组。”,这就是为什么会得到字符数组
var letters = [].concat.apply([], words.map(function(v){ return v.split('') }));