2016-12-14 83 views
2

在我的项目中,我从外部服务器下载一些数据 - 这些数据是以数组的形式存在的。有时在这个数组中只有1个值。例如:javascript将字符串视为字符数组 - 如何更改该字符串?

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]); 
} 

我希望看到“20161205022”的控制台,而是我看到:

2 
0 
1 
6 
1 
2 
0 
5 
0 
2 
2 

为什么会发生?奇怪的是,当myArray[1][0]有更多的值(例如:[“25”,“35”,“64”,“58”]) - 他们解释正确,而不是数位。

+0

? –

+0

你可以发布你在打印myArray时得到的结果吗?[1] [0] –

回答

3

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

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

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

如果您想进一步检查,你必须在“不”的情况下一个数组,你可以使用新的(ISH)Array.isArray(这是shimmable /旧版浏览器上polyfillable )。


或者,如果你不具备源或发送反馈给那些谁是能力的任何控制,固定源/告诉他们修复源,因此它是一致的。

+0

我会在星期一检查你的解决方案。不幸的是,我不能早点看。我会在测试时提供反馈。谢谢 – Loreno

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>

+0

100%解决您的问题的解决方案.... –

+0

只是学习一次.. –

相关问题