gpt4 book ai didi

ruby-on-rails - 在 ruby​​ 中使用自定义比较器对哈希进行排序

转载 作者:数据小太阳 更新时间:2023-10-29 08:23:37 26 4
gpt4 key购买 nike

我有一个散列数组,应该很容易排序,但是由于我是 ruby​​ 的新手并且仍在研究文档,所以我在对具有很少键值组合但需要的散列进行排序时遇到问题根据多个键值排序。

[{:attr1 => 3, :attr2 => 'test', attr3 => 'test2'}, 
{:attr1 => 1, :attr2 => 'test', attr3 => nil},
{:attr1 => 1, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 2, :attr2 => 'test', attr3 => 'test3'}]

所以我想根据自定义规则对其进行排序。自定义规则首先查看 attr1 并根据它降序排序。

如果有相同的 attr1 值,但其中一个 attr3nil 则将 nil 最后排序。

所以我想我是否需要创建自定义比较器。我怎样才能以最少的痛苦做到这一点?

如果要对其进行排序,它将如下所示:

[{:attr1 => 3, :attr2 => 'test', attr3 => 'test2'}, 
{:attr1 => 2, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 1, :attr2 => 'test', attr3 => 'test3'},
{:attr1 => 1, :attr2 => 'test', attr3 => nil}
]

最佳答案

array.sort_by{|h| [-h[:attr1], h[:attr3].nil?? 1 : 0]}

关于ruby-on-rails - 在 ruby​​ 中使用自定义比较器对哈希进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17323596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com