我有一个数组数组的哈希值。数组由哈希索引(这是我读这个的方式):
[
{"name":"G18","data": [["X301",141],["x7901",57],["x2100",142],["x90",58]]},
{"name":"G19","data": [["M16",141],["M203",57],["M29S",142]]},
{"name":"G20","data": [["X301",141],["x7901",57],["x2100",142],["x90",58]]}
]
我想选择包含数组G18
的哈希值,并仅返回数据。
我试着寻找答案,但我还没有找到这样的东西。
答案 0 :(得分:2)
假设:
ary = [
{"name":"G18","data": [["X301",141],["x7901",57],["x2100",142],["x90",58]]},
{"name":"G19","data": [["M16",141],["M203",57],["M29S",142]]},
{"name":"G20","data": [["X301",141],["x7901",57],["x2100",142],["x90",58]]}
]
尝试:
ary.select{|hsh| hsh[:name] == 'G18'}.first[:data]
=> [["X301", 141], ["x7901", 57], ["x2100", 142], ["x90", 58]]
事实上,marmeladze的回答是正确的:
ary.find{|hsh| hsh[:name] == 'G18'}[:data]
使用select
是一次失败。
答案 1 :(得分:2)
如果您只有一个名称为" G18"
的项目,这将对您有用a.find {|e| e[:name] == "G18" }[:data]
请参阅官方文档中的Enumerable#find。
答案 2 :(得分:2)
collection = [
{"name":"G18","data": [["X301",141],["x7901",57],["x2100",142],["x90",58]]},
{"name":"G19","data": [["M16",141],["M203",57],["M29S",142]]},
{"name":"G20","data": [["X301",141],["x7901",57],["x2100",142],["x90",58]]}
]
def data_for_name(name, collection)
collection.find { |item| item[:name] == name }[:data]
end
p data_for_name("G18", collection)