Ruby on rails 如果满足条件,则返回数组中的元素
鉴于此阵列:Ruby on rails 如果满足条件,则返回数组中的元素,ruby-on-rails,ruby,Ruby On Rails,Ruby,鉴于此阵列: [[{"RepCode"=>"AL20", "ID"=>"eae71dff-3796-4c61-956e-a75a00b01a7b", "Name"=>"Schuh, Eddy", "Folios"=>[]}], [{"RepCode"=>"ABNX", "ID"=>"637e9117-ed03-45ef-8950-a7220087ee9a", "Name"=>"Eckerson, Kathy", "Folios" => [{"ID"
[[{"RepCode"=>"AL20", "ID"=>"eae71dff-3796-4c61-956e-a75a00b01a7b", "Name"=>"Schuh, Eddy", "Folios"=>[]}],
[{"RepCode"=>"ABNX", "ID"=>"637e9117-ed03-45ef-8950-a7220087ee9a", "Name"=>"Eckerson, Kathy", "Folios" => [{"ID"=>"d0cda2be-c142-47d1-9a81-a76c0eea2765"}],
[{"RepCode"=>"ABCD", "ID"=>"637e9117-ed03-45ef-8950-a234902038", "Name"=>"Sarah, Barber", "Folios" => [{"ID"=>"46aafe31-f686-49e2-9d58-c694ea55c14f"}]]
我需要返回与对开本
键的给定id匹配的一个数组
代码:
这将返回:
{"RepCode"=>"AL20", "ID"=>"eae71dff-3796-4c61-956e-a75a00b01a7b", "Name"=>"Schuh, Eddy", "Folios"=>[]}
我希望它能回来
{"RepCode"=>"ABNX", "ID"=>"637e9117-ed03-45ef-8950-a7220087ee9a", "Name"=>"Eckerson, Kathy", "Folios" => [{"ID"=>"d0cda2be-c142-47d1-9a81-a76c0eea2765"}
因为检测方法中的ID匹配
如何返回与传入id匹配的一个数组?您可以使用Enumerable
您可以使用枚举
首先,让我们正确格式化数据:
managers = [
[ {"RepCode"=>"AL20", "ID"=>"eae71dff-3796-4c61-956e-a75a00b01a7b", "Name"=>"Schuh, Eddy", "Folios"=>[] } ],
[ {"RepCode"=>"ABNX", "ID"=>"637e9117-ed03-45ef-8950-a7220087ee9a", "Name"=>"Eckerson, Kathy", "Folios" => [{"ID"=>"d0cda2be-c142-47d1-9a81-a76c0eea2765"}] } ],
[ {"RepCode"=>"ABCD", "ID"=>"637e9117-ed03-45ef-8950-a234902038", "Name"=>"Sarah, Barber", "Folios" => [{"ID"=>"46aafe31-f686-49e2-9d58-c694ea55c14f"}] } ]
]
target_id = 'd0cda2be-c142-47d1-9a81-a76c0eea2765'
managers.flatten.find{|k,_v| k['Folios'].any?{|f| f.key?('ID') && f['ID'] == target_id}}
首先,让我们正确格式化数据:
managers = [
[ {"RepCode"=>"AL20", "ID"=>"eae71dff-3796-4c61-956e-a75a00b01a7b", "Name"=>"Schuh, Eddy", "Folios"=>[] } ],
[ {"RepCode"=>"ABNX", "ID"=>"637e9117-ed03-45ef-8950-a7220087ee9a", "Name"=>"Eckerson, Kathy", "Folios" => [{"ID"=>"d0cda2be-c142-47d1-9a81-a76c0eea2765"}] } ],
[ {"RepCode"=>"ABCD", "ID"=>"637e9117-ed03-45ef-8950-a234902038", "Name"=>"Sarah, Barber", "Folios" => [{"ID"=>"46aafe31-f686-49e2-9d58-c694ea55c14f"}] } ]
]
target_id = 'd0cda2be-c142-47d1-9a81-a76c0eea2765'
managers.flatten.find{|k,_v| k['Folios'].any?{|f| f.key?('ID') && f['ID'] == target_id}}
您的数组似乎格式不正确。
Folios
数组是否包含多个Folio?您的数组似乎格式不正确。Folios
数组是否包含多个Folio?
def doit(managers, val)
managers.find { |(h)| h["Folios"] == ["ID"=>val] }
end
managers = [
[{ "RepCode"=>"AL20", "Folios"=>[] }],
[{ "RepCode"=>"ABNX", "Folios"=>[{ "ID"=>"d0cda2be-c142-47d1-9a81" }] }],
[{ "RepCode"=>"ABCD", "Folios"=>[{ "ID"=>"46aafe31-f686-49e2-9d58" }] }]
]
doit(managers, "d0cda2be-c142-47d1-9a81")
# => [{"RepCode"=>"ABNX", "Folios"=>[{"ID"=>"d0cda2be-c142-47d1-9a81"}]}]
managers = [
[ {"RepCode"=>"AL20", "ID"=>"eae71dff-3796-4c61-956e-a75a00b01a7b", "Name"=>"Schuh, Eddy", "Folios"=>[] } ],
[ {"RepCode"=>"ABNX", "ID"=>"637e9117-ed03-45ef-8950-a7220087ee9a", "Name"=>"Eckerson, Kathy", "Folios" => [{"ID"=>"d0cda2be-c142-47d1-9a81-a76c0eea2765"}] } ],
[ {"RepCode"=>"ABCD", "ID"=>"637e9117-ed03-45ef-8950-a234902038", "Name"=>"Sarah, Barber", "Folios" => [{"ID"=>"46aafe31-f686-49e2-9d58-c694ea55c14f"}] } ]
]
target_id = 'd0cda2be-c142-47d1-9a81-a76c0eea2765'
managers.flatten.find{|k,_v| k['Folios'].any?{|f| f.key?('ID') && f['ID'] == target_id}}