[英]How to get values from a hash within an array
我有一个由多个具有相同结构的散列组成的数组。 我还有另一个用字符串填充的数组:
prop_array = [
{:name=>"item1", :owner=>"block1",:ID=>"11"},
{:name=>"item2", :owner=>"block2",:ID=>"22"},
{:name=>"item3", :owner=>"block3",:ID=>"33"},
{:name=>"item4", :owner=>"block4",:ID=>"44"}
]
owner_array = ["block1","block2","block3","block4"]
我想检查哈希中的任何:owner
值是否与owner_array
任何字符串owner_array
,并将变量:partID
设置为:ID
值:
我尝试了以下但它不起作用:
owner_array.each do |owner|
prop_array.each do |prop|
prop.each do |key, value|
if key[:owner] == owner.to_s
puts "YES"
partID = key[:ID]
puts partID
end
end
end
end
如果正确partID
则应返回partID
:
=> "11"
=> "22"
=> "33"
=> "44"
我想检查哈希中的任何 ':owner' 值是否与 owner_array 中的任何字符串匹配
prop_array.select {|hash| owner_array.include?(hash[:owner]) }
#=> [{:name=>"item1", :owner=>"block1", :ID=>"11"}, {:name=>"item2", :owner=>"block2", :ID=>"22"}, {:name=>"item3", :owner=>"block3", :ID=>"33"}, {:name=>"item4", :owner=>"block4", :ID=>"44"}]
将变量 ":partID" 设置为那个 ':ID' 值
partID = prop_array.select { |hash| owner_array.include?(hash[:owner]) }
.map { |hash| hash[:ID] }
#=> ["11", "22", "33", "44"]
由于您希望在循环中分配这些值,请使用:
partID = prop_array.select { |hash| owner_array.include?(hash[:owner]) }.each do |hash|
# assignment happens here one by one
cell_id = hash[:ID] # or whatever logic you have to assign this ID to cell
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.