Я знаю, что не каждый браузер будет выводить объекты объекта в том порядке, в котором они были добавлены при прохождении. Но если я повторю второй объект, могу ли я быть уверен, что он выведет элементы в том же порядке, что и раньше, имея в виду, что он не должен быть в порядке по мере добавления?Объект множественного цикла Javascript, тот же порядок?
ответ
Но если я Переберите объект во второй раз, я могу быть уверен, что он будет выводить элементы в том же порядке, как и раньше ...
Нет, если вы изменяете объект в так или иначе. И даже если вы этого не сделаете, вы полагаетесь на недокументированное поведение, так как есть no гарантирует, что заказ будет посещен, в том числе нет гарантии, что они будут посещены в том же порядке в последующие времена.
Если вам нужно что-то надежное, рассмотреть вопрос об использовании Object.keys
и sort
:
Object.keys(theObject).sort().forEach(function(key) {
// The order here will reliably be alphabetical
});
Обратите внимание, что Object.keys
во всех современных браузерах, но не в старых, как IE8. Однако он может быть легко заполнен.
Живой пример:
var obj1 = {};
obj1.a = 1;
obj1.b = 2;
obj1.c = 3;
Object.keys(obj1).sort().forEach(function(key) {
snippet.log(key);
});
var obj2 = {};
obj2.c = 3;
obj2.b = 2;
obj2.a = 1;
Object.keys(obj2).sort().forEach(function(key) {
snippet.log(key);
});
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
Хорошо, я думаю, что я буду использовать что-то вроде этого, чтобы обеспечить правильный порядок предметов. Благодаря! – Harderer
Не уверен, я думаю, что это будет, но вы можете убедиться, что он будет делать, если вы используете отсортированный ключи массива следующим образом:
var keys = Object.keys(myObject).sort();
keys.forEach(function (key) {
// Access the value
myObject[key]
});
- 1. Javascript: порядок «для» цикла через объект реквизит
- 2. Объект Объект Объекта содержит тот же объект
- 3. MongoDB Вмещает тот же объект
- 4. apply() возвращает тот же объект
- 5. vbo отображает тот же объект
- 6. jmockit возвращает тот же объект
- 7. Delphi Добавляет тот же элемент для цикла
- 8. Итерация над вектором возвращает тот же объект
- 9. Как извлечь данные в тот же объект Javascript
- 10. Javascript, загружающий тот же файл
- 11. Применяя тот же стиль для множественного ребенка DIVS
- 12. Использование множественного AJAX звонки на тот же элемент Bootsfaces
- 13. Каков точный порядок выполнения цикла Javascript?
- 14. HashMap может хранить всегда один и тот же порядок?
- 15. Предоставляет ли javascript возможность перечислить один и тот же объект дважды по полям в том же порядке?
- 16. java.lang.ClassCastException - тот же объект - два класса, почему?
- 17. Все элементы указывают на тот же объект
- 18. Используя тот же объект в разных пакетах
- 19. Пул потоков, используя тот же объект
- 20. Удалить тот же объект из разных страниц
- 21. Rails factory_girl create_list строит тот же объект
- 22. Два указателя на тот же объект
- 23. angular.constant как объект взять тот же реф
- 24. Я получаю тот же объект дважды
- 25. Java: ObjectInputStream возвращает тот же объект
- 26. Создайте вторую последовательность, тот же объект
- 27. Метод Django тот же объект, не сохраняющий
- 28. Drools обновление и тот же объект одновременно
- 29. Тот же объект в разных классах?
- 30. Использовать тот же объект между действиями
Вы уверены, что нашли ошибку? _ ни один браузер не будет выводить объекты объекта в том порядке, в котором они были добавлены при прохождении через_ – halafi
@halafi: нет гарантии о том, что 'for-in' итерирует имена свойств вообще. –