在哈希数组中找不到true的值时返回nil



当我找不到is_my_favorite时,我需要能够返回nil?值为true,并返回最喜欢的哈希。我当前的代码将返回true的散列,但如果它们都是false,例如,我想返回nil,但我无法在不破坏我的代码的情况下找到这样做的方法,而我的代码目前只完成了我想要的一半。

# array_of_hash_objects will look something like this:
# [
#   { name: 'Ruby', is_my_favorite?: true },
#   { name: 'JavaScript', is_my_favorite?: false },
#   { name: 'HTML', is_my_favorite?: false }
# ]
array_of_hash_objects.each do |item|
item.each do |words|
if words.one?(true)
return item


end
end
end
end

我试过这个:

array_of_hash_objects.each do |item|
item.each do |words|
if words.one?(true)
return item
else
return nil


end
end
end
end

但这会返回

失败/错误:expect(find_favorite(array((.to eq(expected_output(

expected: nil
got: [{:is_my_favorite?=>false, :name=>"Python"}, {:is_my_favorite?=>false, :name=>"JavaScript"}, {:is_my_favorite?=>false, :name=>"HTML"}]

您可以简单地使用find方法https://apidock.com/ruby/Enumerable/find

array_of_hash_objects = [
{ name: 'Ruby', is_my_favorite?: true },
{ name: 'JavaScript', is_my_favorite?: false },
{ name: 'HTML', is_my_favorite?: false }
]
array_of_hash_objects.find { |item| item[:is_my_favorite?] }

这将给你:

=> [{:name=>"Ruby", :is_my_favorite?=>true}]

现在,如果你得到一个数组的散列中有所有的假值:

array_of_hash_objects = [
{ name: 'Ruby', is_my_favorite?: false },
{ name: 'JavaScript', is_my_favorite?: false },
{ name: 'HTML', is_my_favorite?: false }
]
array_of_hash_objects.find { |item| item[:is_my_favorite?] }

您将获得:

=> nil

最新更新