Возникла следующая задача — сделать хеш таблицу в которой ключом будет произвольный объект.
Выяснил, что хеш от объекта рассчитывается на основе строки возвращаемой ToString.
Соответственно по-умолчанию у всех объектов одинаковый результат ToString.
При этом сами объекты можно сравнить на < > =.
Подскажите как можно организовать организовать быстрый поиск по ключам-объектам стандартными средствами JS, не используя внешних компонент.
AntonAD wrote:
> Подскажите как можно организовать организовать быстрый поиск по > ключам-объектам стандартными средствами JS, не используя внешних компонент.
В кратце: сделай метод у твоего ключа-объекта для перевода его в строку, идентифицирующую объект, и используй её как ключ в обычном мапе.
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ., Вы писали:
.>AntonAD wrote:
>> Подскажите как можно организовать организовать быстрый поиск по >> ключам-объектам стандартными средствами JS, не используя внешних компонент. .>В кратце: сделай метод у твоего ключа-объекта для перевода его в строку, идентифицирующую объект, и используй её как ключ в обычном мапе.
В качестве ключа я использую произвольный объект, поэтому этот вариант не подходит.
Здравствуйте, ., Вы писали:
.>AntonAD wrote:
>> Подскажите как можно организовать организовать быстрый поиск по >> ключам-объектам стандартными средствами JS, не используя внешних компонент. .>В кратце: сделай метод у твоего ключа-объекта для перевода его в строку, идентифицирующую объект, и используй её как ключ в обычном мапе.
К примеру, можно добавить к объекту уникальный идентификатор, и уже его значение использовать как индекс массива.
var object = {};
var data = [];
object.__UID__ = "" + Math.random();
data[object.__UID__] = "value";
alert(data[object.__UID__]);
Здравствуйте, _Oleg_, Вы писали:
_O_>Здравствуйте, ., Вы писали:
.>>AntonAD wrote:
>>> Подскажите как можно организовать организовать быстрый поиск по >>> ключам-объектам стандартными средствами JS, не используя внешних компонент. .>>В кратце: сделай метод у твоего ключа-объекта для перевода его в строку, идентифицирующую объект, и используй её как ключ в обычном мапе.
_O_>К примеру, можно добавить к объекту уникальный идентификатор, и уже его значение использовать как индекс массива.
_O_>
Здравствуйте, AntonAD, Вы писали: AAD>В качестве ключа я использую произвольный объект, поэтому этот вариант не подходит.
Может, подменить ему прототип?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.