ie9 начал сам сортировать массивы
Здравствуйте.
Не знаю с чем это связано, но с недавнего времени изменилось поведение for( in ) в IE. вот код var arr = new Array(); arr['555'] = "Первый"; arr['777'] = "Второй"; arr['666'] = "Третий"; for (var i in arr) { alert(i + ':' + arr[i] + '; '); } который в Firefox и Seamonkey, как и раньше (и как в предыдущих IE) выводит: 555:Первый 777:Второй 666:Третий в новых же IE9, Хроме и Опере вывод такой: 555:Первый 666:Третий 777:Второй т.е. массив отсортирован по ключам, а мне это совершенно ни к чему. Подскажите, плз, можно ли как-то предотвратить эту автосортировку для for( in )? |
1. У вас не массив а хэш.
2. Порядок ключей в хэше не гарантирован и может быть произволен. |
хорошо, пусть Хеш.
Проблема в том, что IE до 9 версии его не сортировали, а новый - сортирует. Можно ли это как-то предотвратить? |
Aetae,
т.е. как бы получается, что ваше второе утверждение для новых ie, хром и оперы неверно - порядок непроизволен. |
Цитата:
Цитата:
|
Цитата:
Если такое использование хэшей категорически неправильное, может быть порекомендуете какие-то рабочие методы? |
Методы зависят от задачи.
Цитата:
|
задача-то простая )
выбирать их хеша arr['555'] = "Первый"; arr['777'] = "Второй"; arr['666'] = "Третий"; элементы в том порядке, в котором они объявлялись |
Цитата:
var arr = [ {id: '555', name: 'Первый'}, {id: '777', name: 'Второй'}, {id: '666', name: 'Третий'} ], i, len; for (i = 0, len = arr.length; i < len; i += 1) { alert(arr[i].id + ':' + arr[i].name + '; '); } |
Pavel M.,
спасибо, то что нужно! |
Часовой пояс GMT +3, время: 11:29. |