当我找不到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