javascript将字符串视为字符数组 - 如何更改?

时间:2016-12-14 12:01:38

标签: javascript arrays string char

在我的项目中,我从外部服务器下载了一些数据 - 这些数据是一个数组形式。有时在这个数组中只有1个值。例如:

My array

在这种情况下你可以看到我有一个数组,它由5个数组组成。我感兴趣的数据在myArray[1][0]。正如您所看到的,此数组中只有1个值,它是:" 20161205022"。

现在,因为并非总是我只获得1个值,所以我这样做:

for (var i = 0 ; i < myArray[1][0].length ; i++) {
    console.log(myArray[1][0][i]);
}

我希望看到&#34; 20161205022&#34;在控制台中,但我看到了:

2
0
1
6
1
2
0
5
0
2
2

为什么会这样?奇怪的是,当myArray[1][0]有更多值时(例如:[&#34; 25&#34;,&#34; 35&#34;,&#34; 64&#34;,&#34; 58&#34;]) - 它们被正确解释,而不是逐位解释。

2 个答案:

答案 0 :(得分:3)

这是因为JavaScript字符串具有length属性,并且它们支持使用[]来索引它们。

您需要检测来源是否为您提供了字符串或数组。 1 您可以使用typeof

if (typeof myArray[1][0] === "string") {
    // It's a string
} else {
    // It isn't
}

如果你想进一步检查你有一个数组在&#34;不是&#34;例如,您可以使用新的(ish)Array.isArray(在旧版浏览器上可以调整/可填充)。

1 或者,如果您对源或能够向其发送反馈的人有任何控制权,请修复源/告诉他们修复源以使其保持一致。

答案 1 :(得分:0)

你应该参考这个例子,你的问题将得到解决......

var myArray =new Array(5);
 myArray[1]= new Array(1);
  myArray[1][0]=20161205022;

  var div1 = document.getElementById('ht');
  function myfun(){
     for (var i = 0 ; i < myArray[1].length ; i++) {
       div1.innerHTML+=myArray[1][i]+"<hr>";
  }
  }

myfun();
<div id="ht"></div>