¿Necesito poder devolver cero cuando no puedo encontrar is_my_favorite? para tener un valor de verdadero y devolver el hash que es el favorito. Mi código actual devolverá el hash que es verdadero, pero si todos fueran falsos, por ejemplo, quiero devolver cero, pero no puedo encontrar una forma de hacerlo sin romper mi código, que actualmente hace la mitad de lo que Deseo.
# 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 endHe intentado esto:
array_of_hash_objects.each do |item| item.each do |words| if words.one?(true) return item else return nil end end end endpero esto vuelve
Falla/Error: 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"}]Simplemente puede usar el método de 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?] }Esto te dará:
=> [{:name=>"Ruby", :is_my_favorite?=>true}]Ahora, si obtuviste una matriz con todos los valores falsos en el hash:
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?] }Conseguirás:
=> nil