Является ли порядок полей в объекте 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
Ответы
Ответ 1
Большинство браузеров будут проходить через свойства в том порядке, в котором они были добавлены к объекту, но стандарт Javascript говорит, что порядок undefined - поэтому вы не должны полагаться на это поведение. Например, я прочитал сообщение о том, как Google Chrome не всегда демонстрировал это поведение.
Если вам нужна упорядоченная функциональность, вы должны создать для себя новый класс, который может использовать как объектные, так и цифровые клавиши.
Ответ 2
Нет, поведение зависит от реализации, и оно не гарантируется. Используйте массив, когда заказ необходимо сохранить.