2012-03-23 11 views
15

Noob質問がここにあります!配列内のハッシュから特定の値を取得するruby rails

私はこのようになりますハッシュの配列があります。私はマップを使用してに見えたかのように選択

ids = [1,2] 

arr = [{id: 1, name: "Pedro"},{id: 2, name: "Pablo"}] 

と、このような配列を持ちたい

ids = arr.each.select{|k,v| "id"==k} 

しかし、私はそれを理解することはできません。

答えて

29

は、以下のことを試してみてください。

ids = arr.map { |x| x[:id] } 
+0

それは動作します!!!おかげでトンのNiklas! – obi

+4

'arr.map(&:[:id])'のようなものはどうしてうまくいかないのですか? – Noz

+2

@ Cycle:いくつかの理由があります。最初の ':['はシンボルではありません。 '['は有効な識別子ではありません。第2に、正確な構文は 'method(arg1、arg2、...、&x)'なので、メソッドの引数と組み合わせて '&'トリックを使うことはできません。ここで、xは ' to_proc'メソッドを呼び出します。その 'to_proc'メソッドが呼び出され、結果の' Proc'オブジェクトが 'method'にブロックパラメータとして渡されます。 –

関連する問題