【发布时间】:2014-03-17 07:13:51
【问题描述】:
我正在尝试使用新的 (ES6) Map 对象来表示属性和值之间的映射。
我有类似以下形式的对象:
{key1:value1_1,key2:value2_1},..... {key1:value1_N,key2:value2_N}
我想根据 both 它们的 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 对象的解决方案。
我宁愿不使用外部集合库 - 但如果有更好的解决方案,我也有兴趣了解它。
【问题讨论】:
标签: javascript map equality ecmascript-harmony