我有散列的数组,我想的唯一值出来。拨打Array.uniq
不会给我我所期望的。我如何从哈希在Ruby中数组的独特元素?
a = [{:a => 1},{:a => 2}, {:a => 1}]
a.uniq # => [{:a => 1}, {:a => 2}, {:a => 1}]
凡我所料:
[{:a => 1}, {:a => 2}]
在在网上搜索周围,我没有拿出一个解决方案,我很高兴。伙计们建议重新定义Hash.eql?
和Hash.hash
,因为这是Array.uniq
的查询。
编辑: 当我在现实世界中跑进此,散列是稍微复杂一些。他们是解析的JSON的是有多个字段,其中一些的值分别为散列以及结果。我有一组我想要过滤出唯一值的结果。
我不喜欢重新定义Hash.eql?
和Hash.hash
的解决方案,因为我要么必须重新定义全球Hash
,或者重新定义它在我的阵列中的每个条目。改变Hash
定义为每个条目会很麻烦,特别是因为有可能嵌套每个条目的内部散列。
更改Hash
全球有一定的潜力,特别是如果它是暂时完成。我想要构建另一个类或者帮助函数,将旧的定义保存下来并恢复它们,但是我认为这会增加比实际需要更多的复杂性。使用inject
似乎是重新定义Hash
的好替代方案。
更多更好,我觉得不是一个链接我张贴以上 – edthix 2009-03-06 10:30:38