Порядок итерации отличается в IE9
В IE9 числовые ключи свойств объекта сортируются, что приводит к другому порядку итераций в IE9 по сравнению с IE8, где порядок сохраняется при вставке.
var obj = {
"5": "John",
"1": "Kumar",
"3": "Rajesh",
"2": "Yogesh"
}
for(var key in obj) alert(key)
Результат
// 1,2,3,4 в IE9
// 5,1,3,2 в IE8, IE7
Есть ли в любом случае, я могу отключить эту автоматическую сортировку IE9. Если нет, то можно ли как-то заставить браузер понять, что ключи должны быть определены как строки, а не как числа (но без добавления пробела, _ или любых других специальных символов)
Пожалуйста, предложите!
Вот пример кода, где я сталкиваюсь с этой проблемой.
function Person(id, name) {
this.id = id;
this.name = name;
}
var persons = new Object();
var p1 = Person("5","John")
persons[5]=p1
var p2 = Person("1","Kumar")
persons[1]=p2
var p3 = Person("3","Rajesh")
persons[3]=p3
var p4 = Person("4","Yogesh")
persons[4]=p4
for(var id in personId){
var p = persons[id];
var option = new Option(p.name, p.id);
select.options[select.options.length] = option;
}
Параметры выбора, сгенерированные этим сценарием, были отсортированы по идентификатору в IE9, где мне нужен тот же порядок, в котором он вставлен.