2016-12-14 4 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 
} 

Если вы хотите проверить, далее, что у вас есть массив в «не» случае, вы могли бы использовать новый (МОГ) 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

просто изучите этот раз .. –

Смежные вопросы