我有一系列哈希 -
[{"id"=>1,
"name"=>"Bose Headphones",
"created_at"=>"2015-11-25T10:40:29.120Z",
"updated_at"=>"2015-11-25T10:40:29.120Z",
"description"=>"Bose",
"active"=>true},
{"id"=>3,
"name"=>"test topic",
"created_at"=>"2015-11-30T14:34:03.087Z",
"updated_at"=>"2015-11-30T14:34:03.087Z",
"description"=>"test",
"active"=>true},
{"id"=>4,
"name"=>"Wireless Mouse",
"created_at"=>"2015-11-30T14:35:16.583Z",
"updated_at"=>"2015-11-30T14:35:16.583Z",
"description"=>"WM",
"active"=>true},
{"id"=>5,
"name"=>"Fit Band",
"created_at"=>"2015-12-01T04:39:03.034Z",
"updated_at"=>"2015-12-01T04:39:03.034Z",
"description"=>"Fitness Band",
"active"=>true}]
我想获取数组中的所有名称值,然后使用.sample
从列表中获取我想要的任何数字。
我正在尝试的方式是 -
arr = []
arr = arrOfHash.map{|x| "#{x['name']}"}.sample(1)
这是给我的
当多个'值时,值不能是数组。属性不存在。不 一个数组(ArgumentError)
答案 0 :(得分:1)
我已对此进行了测试,似乎按预期工作了!
arrOfHashes.map{|i| i["name"]}.sample(1)
答案 1 :(得分:1)
您可以跳过map
并从随机哈希中获取"name"
:
arrOfHash.sample['name']
答案 2 :(得分:0)
红宝石中有一种名为vine的宝石,可让您根据键访问值。 我会做类似的事情(假设上面的数组名称是array_of_hashes)
require 'vine'
name_list = []
array_of_hashes.each do |hash|
name_list << hash.access("name")
end
puts "All the extracted names from array #{name_list}"