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... в цикле выполняет итерации по свойствам объекта в произвольном порядке

Если вы хотите заказать числовые ключи, используйте массив.