Chrome и, возможно, свойства объекта сортировки Opera автоматически
Проблема: Chrome автоматически сортирует свойства объекта.
Если у меня есть объект вроде:
var obj = {4: "first", 2: "second", 1: "third"};
затем, когда я сделаю следующее:
for(var i in obj) {
console.debug(obj[i]);
}
Я вижу следующее:
third
second
first
но ожидайте:
first
second
third
Ответы
Ответ 1
Никогда не полагайтесь на порядок свойств. Они неупорядочены и спецификация не определяет, в каких должно быть перечислены свойства заказа.
Свойства заказов Chrome с числовыми ключами, в то время как другие браузеры перечисляют их в порядке размещения. Это зависит от реализации.
Ответ 2
Вы не должны ожидать какого-либо определенного порядка для ключей в циклах for..in
. Из MDC docs:
A for... в цикле выполняет итерации по свойствам объекта в произвольном порядке
Если вы хотите заказать числовые ключи, используйте массив.