我有一个哈希数组,其中键是用户对象(这是因为我正在按用户对搜索结果进行分组:#<User:0x007ffa3d570f00> => ["taco","pizza","unicorn"]
)。
我希望能够通过User对象属性对哈希数组进行排序,如下所示:
search_results.sort_by{|item| item[0].age} #item[0] = User object
但是,当遇到年龄为零的第一个用户时,会抛出ArgumentError: comparison of NilClass with Integer failed
。我尝试在 sort_by 块中添加unless user.age.nil?
,但这没有帮助。
有什么想法吗?
答案 0 :(得分:12)
将nil
个对象视为其他对象,可能是0
或Float::INFINITY
?
search_results.sort_by { |user| user.age || 0 }
自nil.to_i == 0
以来,你也可以这样做:
search_results.sort_by { |user| user.age.to_i }
答案 1 :(得分:2)
试试这个:
search_results.sort_by{|user| user.age ? user.age : 0 }
答案 2 :(得分:0)
对于布尔值,基于megas&#39;溶液:
[true, false, false, true].sort { |a|
a ? 0 : 1
}
=> [true, true, false, false]