2016-12-14 82 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

只是學習一次.. –

相關問題