|
|
|||||||
Map - Объекты в качестве ключей28.02.2021, 23:28. Показов 3645. Ответов 16
Пример отсюда
А как принято в Javascript делать ассоциативный массив, у которого ключами являются объекты?
0
|
|||||||
| 28.02.2021, 23:28 | |
|
Ответы с готовыми решениями:
16
Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map? Порядок ключей в Map |
|
22 / 15 / 8
Регистрация: 20.02.2019
Сообщений: 128
|
|
| 28.02.2021, 23:57 | |
|
Хм. всегда ассоциативный массив понимал как: массив, в котором в качестве ключей применяются строки. Где хранятся пара: ключ, значение. Ну и в этом массиве значение завязано с ключом, и доступ к этому значению производится по имени ключа.
0
|
|
|
|
||||||
| 28.02.2021, 23:57 | ||||||
|
В этом и состоит особенность структуры данных
Map, что в качестве ключей могут выступать именно объекты (а john и currentUser, как мы понимаем, суть различные объекты). Если бы мы использовали в качестве хранилища обычный объект JS, у которого в качестве ключей могут выступать только строки, то всё было бы иначе:
1
|
||||||
|
22 / 15 / 8
Регистрация: 20.02.2019
Сообщений: 128
|
||
| 01.03.2021, 00:11 | ||
|
0
|
||
|
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
|
|||||||||||||
| 01.03.2021, 00:52 | |||||||||||||
|
Добавлено через 5 минут
john и currentUser, которые используются в качестве ключа. То есть, обратившись к разным объектам (ключам) получаем разные значения, обратившись к одинаковым ключам - одинаковы значения. Другими словами, в вашем примере:
2
|
|||||||||||||
|
22 / 15 / 8
Регистрация: 20.02.2019
Сообщений: 128
|
||||||
| 01.03.2021, 00:52 | ||||||
|
А почему не так?
0
|
||||||
|
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
|
||||||||||||||||
| 01.03.2021, 00:55 | ||||||||||||||||
|
Вот если это:
0
|
||||||||||||||||
|
|
||||||||||||||||||
| 01.03.2021, 14:53 [ТС] | ||||||||||||||||||
|
Добавлено через 2 часа 7 минут DrType, Tavashi, т.е. нормальный обход - приводить объекты к примитивам (чаще всего к строкам)? Добавлено через 9 минут
DrType, в вашем примере все ключи будут считаться одинаковыми, потому что
1
|
||||||||||||||||||
|
|
|||||||
| 01.03.2021, 14:59 | |||||||
|
Как вариант — использовать JSON.stringify():
1
|
|||||||
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||||||||||||||||
| 01.03.2021, 18:26 | ||||||||||||||||
Сообщение было отмечено damix как решение
Решение
damix, хорошая возможность поизучать HashMap в разделе "Алгоритмы и структуры данных".
В C# было всё коряво с изучением, потому что там учебный материал обычно рассчитан на сачков. А в JS только незамутненная задача с нуля, только хардкор. скрипт на TypeScript
Скрипт, транспилированный в JS:
Алгоритм коллекций с хэшами взят у Microsoft: https://referencesource.micros... 34c0932864 Простенький корявенький алгоритм расчета хэшкода взят из Википедии: https://ru.wikipedia.org/wiki/Adler-32 (Для чисел лучше взять алгоритм, заточенный под числа "с магическими числами")
2
|
||||||||||||||||
|
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
|
||||||||
| 02.03.2021, 00:27 | ||||||||
0
|
||||||||
|
|
|||
| 30.07.2021, 21:25 [ТС] | |||
|
И все таки, как нормально решить проблему? Без toString(), JSON.stringify() или другого убожества. Единственная страница с этим же вопросом вот https://esdiscuss.org/topic/maps-with-object-keys Так сделали они эти value types в ES7? Или единственный способ - сторонняя реализация Map?
0
|
|||
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
| 31.07.2021, 05:46 | |
|
1
|
|
|
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
|
|||||||
| 02.08.2021, 17:41 | |||||||
Не по теме: Как третий вариант, написать пропозал по добавлении желаемого функционала и ждать =)
0
|
|||||||
|
|
||||||||||||
| 02.08.2021, 20:51 [ТС] | ||||||||||||
Добавлено через 2 минуты Если уж руками делать hashmap то как по ссылке
0
|
||||||||||||
|
1172 / 762 / 194
Регистрация: 21.05.2016
Сообщений: 1,858
|
|
| 03.08.2021, 02:15 | |
|
damix, вы не понимаете, вам все равно нужно определять правило по которому вы будет считать объекты равными. Выше был как пример, чтобы было понятно о чем речь. Ваш же пример, который по ссылке, без этого определения тоже работать не будет. Если вы хотите структуру, которая бы магическим образом угадывала ваши мысли что считать эквивалентными объектами, то такой еще нет.
0
|
|
|
|
||||||||
| 11.11.2024, 15:39 [ТС] | ||||||||
|
Но тут главное, что непонятно было, это как правильно сравнивать объекты по значениям в JS. Ну не может же это всерьез быть через JSON или другие строки. Наверняка же кто-то уже стороннюю либу написал для этого. Сделал такое дополнение
P.S. Стороннюю либу таки написали https://lodash.com/docs/4.17.15#isEqual но и там
0
|
||||||||
| 11.11.2024, 15:39 | |
|
Помогаю со студенческими работами здесь
17
Dictionary с адресами классов в качестве ключей Словарь в котором в качестве ключей выступают символы 'м'и 'ж' Словарь в котором в качестве ключей выступают символы 'м'и 'ж' Объекты в Tiled MAP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|