我有散列的數組,我想的唯一值出來。撥打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