6

次のように、rubyでハッシュの配列を作成したいと思います。

 arr[0]
     "name": abc
     "mobile_num" :9898989898
     "email" :abc@xyz.com

 arr[1]
     "name": xyz
     "mobile_num" :9698989898
     "email" :abcd@xyz.com

ハッシュ配列のドキュメントを見てきました。私が見つけたすべての中で、私は次のようなことをしなければなりません

c = {}
c["name"] = "abc"
c["mobile_num"] = 9898989898
c["email"] = "abc@xyz.com"

arr << c

上記のステートメントのようにループで繰り返すと、を埋めることができますarr。私は実際にはのような1行のrowofrows["abc",9898989898,"abc@xyz.com"]です。これを行うためのより良い方法はありますか?

4

3 に答える 3

15

「rowofrows」の意味が配列の配列であると仮定すると、達成しようとしていると私が思う解決策は次のとおりです。

array_of_arrays = [["abc",9898989898,"abc@xyz.com"], ["def",9898989898,"def@xyz.com"]]

array_of_hashes = []
array_of_arrays.each { |record| array_of_hashes << {'name' => record[0], 'number' => record[1].to_i, 'email' => record[2]} }

p array_of_hashes

ハッシュの配列を出力します:

[{"name"=>"abc", "number"=>9898989898, "email"=>"abc@xyz.com"}, {"name"=>"def", "number"=>9898989898, "email"=>"def@xyz.com"}]
于 2012-12-05T15:19:07.150 に答える
3

次のように push メソッド内で直接行うこともできます。

  1. 最初に配列を定義します。

    @shopping_list_items = []

  2. リストに新しい項目を追加します。

    @shopping_list_items.push(description: "Apples", amount: 3)

  3. 次のようなものが得られます。

    => [{:description=>"Apples", :amount=>3}]

于 2015-02-03T14:58:35.953 に答える