словарь содержит только один элемент - PullRequest
0 голосов
/ 11 февраля 2020

Я создаю словарь с элементами и стилями следующим образом:

featureStyles = { };
myList.forEach((f) => featureStyles[f] = myStyle);

myList - это массив элементов, имеющих id.

Однако, когда я проверяю это в моем Отладчик Я получаю только один элемент:

JavaScript Dictionary with complex key

Когда вместо использования фейтур в качестве ключей я выбрал функции id, я получаю ключ -значение-карта, как показано на изображении:

JavaScript Dictionary with string key

Не могу ли я использовать объекты в качестве ключей здесь?

1 Ответ

1 голос
/ 11 февраля 2020

Вы не можете использовать объект в качестве ключа объекта, он будет преобразован в строку, поэтому каждый объект будет соответствовать [object Object], все ключи будут одинаковыми, поэтому вы всегда переопределяете предыдущее значение ключа.

Вы можете использовать WeakMap или Map вместо:

var featureStyles = new WeakMap();
// var featureStyles = new Map();

myList.forEach((f) => featureStyles.set(f, myStyle));
...