Я пытаюсь использовать новые объекты (ES6) Map
, чтобы представлять карту между свойствами и значением.
У меня есть объекты в форме, подобной:
{key1:value1_1,key2:value2_1},..... {key1:value1_N,key2:value2_N}
Я хочу сгруппировать их на основе их значений key1 и key2.
Например, я хочу иметь возможность группировать следующие элементы x
и y
:
[{x:3,y:5,z:3},{x:3,y:4,z:4},{x:3,y:4,z:7},{x:3,y:1,z:1},{x:3,y:5,z:4}]
И получите карту, содержащую:
{x:3,y:5} ==> {x:3,y:5,z:3},{x:3,y:5,z:4}
{x:3,y:4} ==> {x:3,y:4,z:4},{x:3,y:4,z:7}
{x:3,y:1} ==> {x:3,y:1,z:1}
В Python я бы использовал кортежи в качестве словарных клавиш. Карта ES6 допускает произвольные объекты как ключи, но использует стандартный алгоритм равенства (===
), поэтому объекты только равны по ссылке из того, что я могу сказать.
Как я могу выполнить подобную группировку с помощью карт ES6? Альтернативно, решение, использующее обычные объекты JS, если есть изящный способ, который я пропускал.
Я бы предпочел не использовать внешнюю коллекционную библиотеку, но если есть лучшее решение, использующее одно, мне тоже интересно узнать об этом.