2013-02-12 128 views
3

我有散列红宝石收集独特的元素

a = [{name:"x", long:1.0, lat:2.0}, 
    {name:"y", long:2.0, lat:3.0}, 
    {name:"z", long:1.0, lat:2.0}] 

的一些阵列如何删除{name:"x", long:1.0, lat:2.0},这COORDS是相等的最后一个元素,其他的话我需要离开最后一个(在我的情况:与name:"z")哈希与独特COORDS并丢弃所有以前的元素用相同的COORDS

+0

我从来没有遇到过这样的问题......我需要一些算法思想,我可以写自己的ruby代码 – 2013-02-12 11:23:05

+0

是的,请写一些代码。 – 2013-02-12 11:23:56

回答

7

尝试使用Array#uniq与块:

a.uniq { |item| [item[:lat], item[:long]] } 

返回VA该块的颜色被用作比较唯一性的值。

目前尚不清楚为什么要删除“x”而不是“z”,但您可以通过在调用uniq之前颠倒数组来设置示例数据来实现。

+0

a.reverse.uniq {| item | [item [:lat],item [:long]]} .reverse帮助了我! – 2013-02-12 11:28:27