@S0mnium

Проблема решения, баг или фича?

Суть вот в чем — в консоли пишу:
var trade = [ [2, 9, 6, 3, 4, 5], [9, 2, 3, 4, 5], [9, 2, 3, 4, 5, 8], [9, 2, 3, 4, 5, 7] ]; var el=document.getElementById('trade');var gy = trade[parseInt(el.value)];for (var key in gy) { key; };
Идет выборка из массива, а в ответ:
0 1 2 3 4 5 $family $constructor pop push reverse shift sort splice unshift concat join slice indexOf lastIndexOf filter forEach every map some reduce reduceRight each clone clean invoke associate link contains append getLast getRandom include combine erase empty flatten pick hexToRgb rgbToHex extend undefined

Откуда в ключе остальной хлам не понятно. Проверку провожу в Chrome Версия 28.0.1500.95
  • Вопрос задан
  • 3135 просмотров
Решения вопроса 1
@1x1
Пригласить эксперта
Ответы на вопрос 4
d4rkr00t
@d4rkr00t
Потому что for in проходит по всем свойствам объекта и его родителей. Видимо, что-то расширяет объект Object от которого наследуется Array и добавляет как раз ваш мусор, для решения этой проблемы используется hasOwnProperty. В вашем случае, как-то так:

if (gy.hasOwnProperty(key)) {
    console.log(key);
}
Ответ написан
DeVitoz
@DeVitoz
А вообще for in для массивов не очень то рекомендуется, возможно лучше, просто переписать на обычный цикл, примерно так:
for (var i = 0, max = gy.length; i < max; i++) {
console.log(gy[i]);
}

Самый правильный ответ
Ответ написан
Комментировать
@noonesshadow
Консоль открыта на странице с jQuery, или какой-то плагин добавляет ее.
Ответ написан
@vaail
del
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы