【问题标题】:Ruby: sort array of hashes, even though key may not existRuby:对哈希数组进行排序,即使键可能不存在
【发布时间】:2011-11-26 01:59:09
【问题描述】:

在 Rails 应用程序中,我有一个哈希数组,我可以轻松地对其进行排序

array_of_hashes.sort_by { |hash| hash[:key_to_sort] }

但如果不是每个数组成员都有一个键 :key_to_sort 怎么办?然后排序将失败“字符串与 nil 的比较失败”。有没有办法让排序继续?还是有其他方法可以做到这一点?

【问题讨论】:

    标签: ruby arrays sorting hash


    【解决方案1】:

    当哈希没有排序键时,这取决于您想要做什么。我可以想象两种情况:

    1) 从排序中排除哈希

    arr.delete_if { |h| h[:key_to_sort].nil? }.sort_by { |h| h[:key_to_sort] }
    

    2) 将哈希放在数组的开头/结尾:

    arr.sort_by { |h| h[:key_to_sort] || REALLY_SMALL_OR_LARGE_VALUE }
    

    【讨论】:

    • 很好。 在这种情况下将哈希移动到开头/结尾是我的想法,只是不知道该怎么做。在字母的情况下,我只是使用'A' 将缺失值放在首位。
    • 哦,+1 用于描述排除哈希的选项。
    • 很高兴我能帮上忙。恕我直言,使用“”(一个空字符串)比使用“A”作为一个小字符串值更好。
    • @LukasStejskal 使用高字符串值最好的方法是什么?
    • @AdrianMann 我猜:'zzzzzzzzzzzzzzzz...' :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-30
    • 2021-02-18
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多