1

次のようなルビーハッシュがありaます。

a = {
      "module" => 'students',
      "data" => [
        {
          "age" => 12,
          "uid" => 'sd3wrew'
        },
        {
          "age" => 10,
          "uid" => '43e43r'
        },
        {
          "age" => 10,
          "uid" => 'ft34f'
        }
      ]
    }

uid上記のハッシュからすべてを収集し、次のような配列を取得したい:

b = ['sd3wrew', '43e43r', 'ft34f']

そのため、これを行うコードがあり、ループします。

b = []
a['data'].each do |e|
  b << e['uid']
end

とにかく、ループせずeachに簡潔にこの結果を達成する方法はありますか?

4

2 に答える 2

8

あなたは「マップ」と呼ばれる関数型プログラミングの概念を探しています。

b = a['data'].collect {|e| e['uid'] }
# or
b = a['data'].map {|e| e['uid'] }

http://www.ruby-doc.org/core-1.9.3/Array.html#method-i-map

于 2013-01-09T18:22:13.413 に答える
-2

key が と等しい場合、これはハッシュ内の各キーを出力しますuid:

b = a["data"].each_key { |e| print e if e='uid' }
于 2013-01-09T18:43:25.633 に答える