2011-08-23 4 views
5

これは本当に長いストレッチかもしれませんが、それが存在すれば人生を楽にしやすくします。アクティブなレコードと同等のRuby配列。場所(条件)

いずれのケースでも、私は1つのキーでハッシュの配列を持っています。値は別のハッシュです........うん、私は知っています。

相続人は、より良い説明:

@myArrayOfStuff[0] 
@myArrayOfStuff[0]["single-key"] 
@myArrayOfStuff[0]["single-key"]["object-identifier"] 

最初はハッシュを返します。 2番目はオブジェクトを返します(私の場合はページと呼ばれますが、例では異なる名前が使用されます) 3番目は、オブジェクト識別子として参照する変数を返します。

十分に単純です。

私がしたいのは、object-identifierの値がnilでないかxより大きい別の配列を作ることです。何かactiverecord.whereメソッドに似ています。

@x = @myArrayOfStuff.where(["single-key"]["object-identifier"]) > 3orwhatever 

明らかに、これは構文が面倒なので機能しません。しかし、それについて別の方法がありますか? tryしようとする別のルートは、この変数で配列をソートすることかもしれません。何かのように

@x = @myArrayOfStuff.sort {|x,y| y <=> x } 

しかし、私は本当にルビーのソート方法で何が起こっているのか分かりません。 誰も助けることができますか?

+0

http://stackoverflow.com/questions/2637419/understanding-ruby-array-sortそれは私が – overtone

答えて

13

selectメソッドを使用できます。

@x = @my_array_of_stuff.select {|v| v["single-key"]["object-identifier"] > 3} 
+0

は優秀やろうとしているものに適用されるかどうかわからない今、まだこれを読んで!私はすべてを理解しています – overtone

0
collection = [ 
    {a:1, b:2, c:3}, 
    {a:2, b:3, c:4} 
] 
where = {a:1} 
collection.select{|item| 
    where.map{|k,v| 
    item[k] == v ? true : nil 
    }.compact.length == where.length 
} 
+1

コード限定回答は禁止されていませんが、これは群衆調達ではなく、Q&Aコミュニティであることを理解してください。彼女は自分自身で同様の解決策を考え出し、最初に質問を投稿しませんでした。同様の原則は、コードが馴染みにくい今後の読者にも適用されます。そのため、* how * and/or * why *が機能するかどうかを説明することで、答えやコードに文脈を提供してください。 – XenoRo

関連する問題