Я пытаюсь рассматривать объект JS как словарь, и я хочу использовать пару значений (одно буквальное значение, один другой объект) как один ключ , который я делаю в форме массива, без успеха. Проблема заключается в том, что только буквальное значение работает различать ключи, так как следующий фрагмент иллюстрирует:Использование объекта в качестве словаря с массивами в виде ключей в JS
var dictionary = {};
var keyOne = { blah:1 };
var keyTwo = { blegh:2 };
var keyArrayOne = [keyOne, "label"];
var keyArrayTwo = [keyTwo, "label"];
dictionary[keyArrayOne] = "some data";
console.log(dictionary[keyArrayTwo]); //Console returns 'some data'
Я знаю, что я могу использовать массив вместо моего объекта словаря, а просто перебирать и сравнивать, но надеялся воспользоваться более быстрым поиском.
Для получения дополнительной информации я ничего не знаю об объекте, который составляет первый элемент ключа (это может быть что угодно), но вторая часть всегда является строкой.
Есть ли способ достичь того, что мне нужно?
оба массива являются ["objectObject", "label"]. если вам не нужно безопасно содержать такие ключи, как «valueOf», «__proto__» и т. д., просто используйте объект и Object.keys (obj), чтобы получить массив ключей при необходимости. – dandavis
А, спасибо за ваш ответ. Я с тобой по объектной проблеме; проблема заключается в том, что я использую объект как любую часть ключа, а не массив в частности. Я просто борюсь с предложением Object.keys (obj), я боюсь. Не могли бы вы указать, как это может поместиться вокруг фрагмента, который я опубликовал? Благодарю. – hanenbro