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, время: 00:25. |