在我的项目中,我从外部服务器下载了一些数据 - 这些数据是一个数组形式。有时在这个数组中只有1个值。例如:
在这种情况下你可以看到我有一个数组,它由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;]) - 它们被正确解释,而不是逐位解释。
答案 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>