0

ハッシュで構成される配列があります:

people = [{'name':'Bob','id':12}, {'name':'Sam','id':25}, ...etc]

たとえば、配列 people に id 16 を含むハッシュが含まれているかどうかを確認する簡単な方法はありますか?

これが別のデータ構造で実行できる場合は、提案してください。私はハッシュの使用に頑固ではありません。name と id を保存する必要があるだけです (後でさらに多くのフィールドに拡張される可能性があります)。

それがあなたの説明に役立つなら、私はJava/Cのバックグラウンドから来ました。

4

2 に答える 2

1

このようなもの?

people.select { |p| p[:id] == '16' }

selectは配列を反復処理し、結果を返します

また、最初の一致のみを検出することもできます

于 2013-06-25T16:01:22.707 に答える
1

Enumerable#findEnumerable#find_allそしてEnumerable#any?以下に示すように行くのが良い方法です:

people = [{name:'Bob',id:'12'}, {name:'Sam',id:'25'}]
p people.find{ |i| i[:id] == '12' } # to find a single and first entry which satisfies the given condtion
# => {:name=>"Bob", :id=>"12"}


people = [{name:'Bob',id:'12'}, {name:'Sam',id:'25'},{name:'Max',id:'12'}]
p people.find_all{ |i| i[:id] == '12' } # to find a multiple entries which satisfies the given condtion
# => [{:name=>"Bob", :id=>"12"}, {:name=>"Max", :id=>"12"}]

people = [{name:'Bob',id:'12'}, {name:'Sam',id:'25'},{name:'Max',id:'12'}]
p people.any? { |i| i[:id] == '12' }
# => true
于 2013-06-25T16:01:54.517 に答える