4

いくつかのハッシュの配列があります

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}、他の言葉では最後に残す必要があります (私の場合: with name:"z") 一意の座標でハッシュし、同じ座標を持つ以前のすべての要素を削除します

4

1 に答える 1

10

Array#uniqブロックで使用してみてください:

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

ブロックの戻り値は、一意性を比較する値として使用されます。

「z」ではなく「x」を削除する理由は明確ではありませんが、配列を呼び出す前に配列を逆にすることで、サンプル データ セットでそれを実現できますuniq

于 2013-02-12T11:23:46.247 に答える