Подтвердить что ты не робот

Является ли порядок полей в объекте javascript предсказуемым при прохождении через них?

В php, если у вас есть следующий код:

$map = array(
  "first" => 1,
  "second" => 2
);

$map["third"] = 3;

foreach($map as $key => $value) {
  // code
}

Вы знаете, что записи будут перечислены в том порядке, в котором они были добавлены в массив.

Теперь, могу ли я предположить, что одно и то же правило применяется к эквиваленту Javascript ниже?

map = {
  "first": 1,
  "second": 2
};

map["third"] = 3;

for (key in map) {
  // code
}

Это дубликат: Порядок элементов - для цикла (... in...) в javascript

4b9b3361

Ответ 1

Большинство браузеров будут проходить через свойства в том порядке, в котором они были добавлены к объекту, но стандарт Javascript говорит, что порядок undefined - поэтому вы не должны полагаться на это поведение. Например, я прочитал сообщение о том, как Google Chrome не всегда демонстрировал это поведение.

Если вам нужна упорядоченная функциональность, вы должны создать для себя новый класс, который может использовать как объектные, так и цифровые клавиши.

Ответ 2

Нет, поведение зависит от реализации, и оно не гарантируется. Используйте массив, когда заказ необходимо сохранить.