2016-09-22 4 views
2

Я не понимаю, почему этот код не производит числа. Может ли кто-нибудь объяснить, пожалуйста?JS Map to Number

a = '1 3 2 6 1 2'.split(' '); 
a = a.map(Number); 

for (item in a){ 
    console.log(typeof(item)); 
} 

Выход для меня в Chrome - 6 строк.

+6

'item' являются _indexes_, не значения. Вероятно, вы имели в виду 'for (item of a)'. – Xufox

+0

Пятно на. Благодарю. Я бы отметил, что вы отвечаете как решение, но это всего лишь комментарий ... – Robin

+0

Не уверен, правильно ли ответить на ваш вопрос ... это _almost_ вне темы для простой опечатки (или «умственной» опечатки). Вот несколько вещей, которые вы должны были сделать, прежде чем задавать свой вопрос: log 'item', чтобы проверить, что вы перебираете значения, запишите весь массив' a' (должно быть различие в цвете для строк и чисел), проверьте если цикл 'for-in' выполняет итерации над значениями или индексами через документы. – Xufox

ответ

0
a = '1 3 2 6 1 2'.split(' '); 
a = a.map(Number); 

console.log(a); 
+0

Вы пытались использовать элемент typeof, который является строкой, потому что объект - это ваш случай. – jsquerylover

0

Вы не итерация содержание a как вы, кажется, ожидать, но вместо этого итерация по показателям в цикле for..in.

Вы можете обратиться к документации по .. в документации here. Интересная область - это то, где они говорят об использовании для ... в Массивах (и как вы, вероятно, не должны в таком случае).

Если я правильно понял, это то, что я считаю, будет производить результат вы ожидаете:

for (item in a) { 
    console.log(typeof(a[item])); 
} 

Кроме того, доступ к элементам непосредственно