@pr0fedt

Проблема For..in в javascript на IE9

Добрый день,
Допустим имеется следующий JSON:
a = {"10173":{},"10178":{},"10180":{},"10177":{}};

При использовании
for(var id in a)
{
alert(id);
}

в ИЕ 9 выведет ИДшки в отсортированном порядке
Вопрос: как от этого избавиться(ведь в нормальных браузерах и даже IE7 всё нормально работает, а именно порядок сохраняется)?
  • Вопрос задан
  • 2502 просмотра
Решения вопроса 1
Это не только в IE наблюдается, но и в Opera.

Перестройте свою логику — добавьте дополнительное поле отвечающие за порядок вывода.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Это не массив (список), а хэш (словарь). Следовательно, порядок ключей не гарантируется. Даже если в некоторых реализациях порядок соблюдается, это не показатель.
Так что, если порядок критичен, придется сортировать.
Ответ написан
Комментировать
@Apx
Java/JavaEE/Javascript developer
Так не хотите?
var a = [{id:"10173"},{id:"10178"},{id:"10180"},{id:"10177"}];

for(var ind in a)
{
var obj = a[ind];
alert(obj.id);
}
Ответ написан
Комментировать
@pr0fedt Автор вопроса
там просто было всё дело в том, что ajax-ом передавался массивчик с сервера именно в таком виде, так как много где используется особо не хотелось менять структуру. Я просто решил дополнительно передавать сортировки.
Ответ написан
spmbt
@spmbt
Я решал эту проблему с сортировкой хеша в IE тем, что ставил впереди ключа букву (можно любой другой символ). Тогда не сортируется. Что интересно, проблема только с IE9, Оперой и Хромом. Safari и FF — нормально.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы