【发布时间】:2016-09-18 03:10:59
【问题描述】:
我正在尝试将选定的animal_id 数组与owners_to_animals 数组中的“animal_id”对象进行比较,这样我就可以得到一个仅包含相关owner_id 的列表。我尝试遍历哈希,然后只选择在 animal_id 数组中匹配的 animal_id 对象,但它打印出不属于 animal_id 数组的 animal_id=20。
animal_id = [23, 53, 63]
owners_to_animals = [
{ "owner_id" => 73, "animal_id" => 53 },
{ "owner_id" => 73, "animal_id" => 23 },
{ "owner_id" => 73, "animal_id" => 63 },
{ "owner_id" => 73, "animal_id" => 20 },
{ "owner_id" => 83, "animal_id" => 23 },
{ "owner_id" => 83, "animal_id" => 63 }
]
owners_to_animals.each do |x|
# puts x
# x.each do |y|
for i in animal_id do
# puts i
if x.select { |a| a["animal_id"] == i }
puts x
else
puts "no"
end
end
# end
end
我对 x 为什么返回感到困惑:
{"owner_id"=>73, "animal_id"=>53}
{"owner_id"=>73, "animal_id"=>53}
{"owner_id"=>73, "animal_id"=>53}
{"owner_id"=>73, "animal_id"=>23}
{"owner_id"=>73, "animal_id"=>23}
{"owner_id"=>73, "animal_id"=>23}
{"owner_id"=>73, "animal_id"=>63}
{"owner_id"=>73, "animal_id"=>63}
{"owner_id"=>73, "animal_id"=>63}
{"owner_id"=>73, "animal_id"=>20}
{"owner_id"=>73, "animal_id"=>20}
{"owner_id"=>73, "animal_id"=>20}
{"owner_id"=>83, "animal_id"=>23}
{"owner_id"=>83, "animal_id"=>23}
{"owner_id"=>83, "animal_id"=>23}
{"owner_id"=>83, "animal_id"=>63}
{"owner_id"=>83, "animal_id"=>63}
{"owner_id"=>83, "animal_id"=>63}
【问题讨论】:
-
我编辑了您的代码以进行格式化,还使
owners_to_animals成为一个显式数组,因为您的原始代码有些混乱。 -
owners_to_animals.select { |o_a| animal_id.include? o_a['animal_id'] } -
@mudasobwa 这正是我在您发表评论前 3 小时发布的答案;)
标签: ruby multidimensional-array associative-array