Я пытаюсь сравнить выбранный массив animal_id с объектом «animal_id» в массиве owner_to_animals, чтобы у меня был список только соответствующих прав владельца. Я попытался выполнить итерацию через хэш, а затем выберите объект animal_id, который соответствует в массиве animal_id, но он выдает animal_id = 20, который не является частью массива animal_id.Сравнение хеша массивов с массивом, чтобы найти сходство
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
Я запутался, почему х возвращается:
{"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' явного массива, так как исходный код был немного запутанным , –
'owner_to_animals.select {| o_a | animal_id.include? o_a ['animal_id']} ' – mudasobwa
@mudasobwa Вот именно ответ, который я опубликовал за 3 часа до вашего комментария;) –