我想在ruby中创建一个哈希数组:
arr[0]
"name": abc
"mobile_num" :9898989898
"email" :abc@xyz.com
arr[1]
"name": xyz
"mobile_num" :9698989898
"email" :abcd@xyz.com
我看过hash和array文档。在我发现的所有内容中,我必须做点什么 喜欢
c = {}
c["name"] = "abc"
c["mobile_num"] = 9898989898
c["email"] = "abc@xyz.com"
arr << c
在循环中的上述语句中迭代允许我填充arr
。我实际上有一行像["abc",9898989898,"abc@xyz.com"]
那样行。有没有更好的方法呢?
答案 0 :(得分:12)
您可以先将数组定义为
array = []
然后您可以按照以下方式逐个定义哈希值并将其推入数组中。
hash1 = {:name => "mark" ,:age => 25}
然后再做
array.push(hash1)
这会将哈希值插入数组中。类似地,您可以推送更多哈希来创建哈希数组。
答案 1 :(得分:10)
假设你所说的“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"}]
答案 2 :(得分:2)
您也可以直接在push方法中执行此操作:
首先定义你的数组:
@shopping_list_items = []
并在列表中添加新项目:
@shopping_list_items.push(description: "Apples", amount: 3)
这会给你这样的东西:
=> [{:description=>"Apples", :amount=>3}]