Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 31.07.2022, 21:03
Аспирант
Отправить личное сообщение для dimas15 Посмотреть профиль Найти все сообщения от dimas15
 
Регистрация: 21.08.2012
Сообщений: 86

Сообщение от voraa Посмотреть сообщение
Как вы узнаете, в каком порядке у вас расположились ключи?

Еще раз повторю
Типа ничего больше не сделать?
Ответить с цитированием
  #22 (permalink)  
Старый 31.07.2022, 21:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от dimas15
Типа ничего больше не сделать?
чем код #18 не устраивает?
Ответить с цитированием
  #23 (permalink)  
Старый 31.07.2022, 21:30
Аспирант
Отправить личное сообщение для dimas15 Посмотреть профиль Найти все сообщения от dimas15
 
Регистрация: 21.08.2012
Сообщений: 86

Сообщение от voraa Посмотреть сообщение
Как вы узнаете, в каком порядке у вас расположились ключи?

Еще раз повторю
Сообщение от рони Посмотреть сообщение
чем код #18 не устраивает?
Отличное решение, устраивает, спасибо. И кода намного меньше чем у меня.
Ответить с цитированием
  #24 (permalink)  
Старый 31.07.2022, 22:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Сообщение от voraa Посмотреть сообщение
всегда сначала все численные ключи в порядке возрастания, потом остальные ключи в порядке их добавления в объект. Такой порядок не определен в спецификации, но его придерживаются все браузеры)
Вообще вроде определён именно так в последней спеке.
И это меня каждый раз как об этом вспоминаю вводит в состояния бешенства.) Каким безумным извращенцем надо было быть чтобы такое придумать и главное зачем?! Уму непостижимо. Чем им плох был изначальный вариант с простым порядком по мере добавления...
__________________
29375, 35
Ответить с цитированием
  #25 (permalink)  
Старый 01.08.2022, 07:49
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Aetae,

по хорошему в объекте вообще не должно быть какого-то определенного порядка ключей, даже на уровне идеи. Если нужен порядок, есть массив или какие-либо иные структуры, например дерево сортировки. Тогда и не будет бессмысленных вопросов вроде этого топика.
Ответить с цитированием
  #26 (permalink)  
Старый 01.08.2022, 09:59
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Сообщение от Aetae
Вообще вроде определён именно так в последней спеке.
Вроде нет
ECMAScript 2023 https://tc39.es/ecma262/#sec-enumera...ect-properties
Так и сказано
14.7.5.9
Цитата:
The mechanics and order of enumerating the properties is not specified but must conform to the rules specified below.
rules specified below касаются удаления и добавления свойств во время итерации. Про порядок ни слова.

Последний раз редактировалось voraa, 01.08.2022 в 10:06.
Ответить с цитированием
  #27 (permalink)  
Старый 01.08.2022, 14:13
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,495

Сообщение от Alexandroppolus Посмотреть сообщение
Aetae,

по хорошему в объекте вообще не должно быть какого-то определенного порядка ключей, даже на уровне идеи. Если нужен порядок, есть массив или какие-либо иные структуры, например дерево сортировки. Тогда и не будет бессмысленных вопросов вроде этого топика.
Не согласен. ИМХО, язык такого высокого уровня как js должен преследовать в первую очередь интуитивность и удобство, пусть даже ценой небольшой просадки производительности или переусложнённой внутренней механики.
Текущая реализация нифига не интуитивна и нифига не удобна, реализация с рандомным порядком - также нифига не интуитивна и не удобна. Такие дела.

В седой древности подобных топиков тоже хватало, только касались они как раз НЕгарантированого порядка.
Недолгое затишье было только когда на некоторое время все договорились просто делать по мере добавления, но всё быстро снова сломали.)

Сообщение от voraa Посмотреть сообщение
Вроде нет
ECMAScript 2023 https://tc39.es/ecma262/#sec-enumera...ect-properties
Так и сказано
14.7.5.9
rules specified below касаются удаления и добавления свойств во время итерации. Про порядок ни слова.
Это описывается тут: https://tc39.es/ecma262/#sec-ordinaryownpropertykeys
__________________
29375, 35

Последний раз редактировалось Aetae, 01.08.2022 в 14:19.
Ответить с цитированием
  #28 (permalink)  
Старый 01.08.2022, 15:47
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

Сообщение от Aetae
реализация с рандомным порядком - также нифига не интуитивна и не удобна.
ну, видимо, у всех по-разному, дело вкуса

я вообще долгое время не знал, что в объектах (да и в Map) может быть какой-то порядок, и всегда для таких задач пользовался массивами - там порядок задан явно.
Ответить с цитированием
  #29 (permalink)  
Старый 02.08.2022, 14:05
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Сообщение от Aetae
Чем им плох был изначальный вариант с простым порядком по мере добавления...
Изначального варианта вообще не было но первые реализации именно так и поступали и в целях соблюдения обратной совместимости это было общепринятой нормой.
Новый вариант правил размещения позволяет размещать объекты в памяти с применением реляционной алгебры в частности V8 использует красно черные бинарные деревья что позволяет математически оптимально размещать и использовать данные.

Это сделано с целью упрощения реализации позволило удалить из движка JS отдельный не нужный механизм хранящий ссылки на данные, порядок их размещения и данные индексации.

В общем сделали протестили и продавили новый вариант в стандарт.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новый обьект или вызов функции greenrow_ty Общие вопросы Javascript 5 03.10.2016 20:54
Как из строки получить обьект? linklee Общие вопросы Javascript 22 15.07.2013 18:11
обьект Image неправильно возвращает height, width Andrey1205 Элементы интерфейса 8 10.06.2012 16:06
Обьект из строки Andrejs Элементы интерфейса 7 06.07.2011 17:19
Скрипт неправильно работает в FF InviS Общие вопросы Javascript 6 11.04.2010 16:56