在使用 JavaScript 数组进行打印时出现错误

3
我正在使用split函数来从一个数组中删除逗号,该数组在使用for循环打印时显示,但是当我使用以下代码时:
 <script>
   var name = ["A", "B", "C"];
   var name_split = name.split(',')
   for(var i=0;i<name_split.length;i++)
   {
      document.write("\n",name_split[i],"\n");
   }
  </script>

我得到了上述代码的输出,结果为:A B C。但是当我使用不同的变量和更多的方法时,它会出现错误。例如,这段代码:

 <script>
   var intro = ["Hello","World","etc"];
   var intro_split = intro.split(',');
   for(var a=0;a<intro_split.length;a++)
     {
         document.write("\n",intro_split[a],"\n");
     }
 </script>

这段代码的错误是:TypeError: intro.split不是一个函数。为什么会发生这种情况?

2
我认为'split'函数用于字符串而不是数组! - MHS
你会得到这个错误是因为没有 Array.split。你已经有一个数组了,不需要创建一个新的数组。 - Gabs00
2
第一个能够正常工作的原因是在全局范围内使用变量“name”。参见:https://dev59.com/vIbca4cB1Zd3GeqPQQGB - JonSG
3个回答

6

'split'函数用于字符串,例如以下代码:

var intro = "Hello,World,etc";
var intro_split = intro.split(',');
for(var i=0;i<intro_split.length;i++)
  {
     document.write("\n",intro_split[i],"\n");
  }

要打印数组项,请使用以下代码:

<script>
  var intro = ["Hello","World","etc"];
  for(var a=0;a<intro.length;a++)
  {
     document.write("\n",intro[a],"\n");
  }
</script> 

在数组中打印时如何去掉逗号,你能否提供一段代码?谢谢。 - Mehul Chachada

1
你的第一个代码片段之所以有效,是因为“name”是JavaScript内置属性/方法的名称: http://www.w3schools.com/js/js_reserved.aspthis comment中所链接的那样,“name”...

...只能保存字符串和任何对象(包括数组)都被强制转换为原始类型。

因此,它会将你的数组强制转换为字符串(在这里你可以使用“split”)。例如:
var name = ["A", "B", "C"];
console.log(name);//returns "A, B, C"

但是:
var test = ["A", "B", "C"];
console.log(test);//returns ["A", "B", "C"]

1
你真的不需要调用 split(character-to-split-by) - 你已经拥有一个字符串数组(如果在字符串上调用 split,会得到一个字符串/字符数组)。所以在这种情况下,只需循环遍历 intro 数组即可:
<script>
   var intro = ["Hello","World","etc"];   
   for(var a=0;a<intro.length;a++)
     {
         document.write("\n",intro[a],"\n");
     }
 </script>

另外,如果你真的想尝试使用split,则可以首先使用join数组(默认情况下,连接是通过逗号,完成的)。在这种情况下,你可以像这样做:

  <script>
       var intro = ["Hello","World","etc"];  
       var veryUnnecessaryStuff = intro.join();
       var intro_split = veryUnnecessaryStuff.split(','); 
       for(var a=0;a<intro_split;a++)
         {
             document.write("\n",intro_split[a],"\n");
         }
  </script>

我希望这有所帮助。

谢谢你清楚地解释了这两个内容。 - Mehul Chachada

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接