红宝石收集独特的元素

时间:2013-02-12 11:12:21

标签: ruby hash

我有一些哈希

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

1 个答案:

答案 0 :(得分:9)

尝试将Array#uniq与块一起使用:

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

块的返回值用作比较唯一性的值。

不清楚你为什么要" x"要被删除而不是" z",但你可以通过在调用uniq之前反转数组来实现示例数据集。