gpt4 book ai didi

ruby-on-rails - 对结构体数组进行排序

转载 作者:行者123 更新时间:2023-12-01 23:55:26 26 4
gpt4 key购买 nike

我有一个称为领导者的结构数组。结构类看起来像这样,用于上下文信息:

class Leader < Struct.new(:rank, :user); end

两个问题:

  1. 如何按等级对结构体数组进行排序?
  2. 如何按排名和 user.created_at 对结构体数组进行排序?

最佳答案

1.

假设排名是数字:

array.sort {| a, b | a[:rank] <=> b[:rank] }

这只是指定我们使用[:rank]比较a和b。

2.

array.sort {| a, b | a[:rank] == b[:rank] ? 
a[:user].created_at <=> b[:user].created_at :
a[:rank] <=> b[:rank] }

这使用三元。如果排名相等,我们通过 [:user].created_at 进行比较。否则,我们按排名进行比较。

您可以在自己的类中实现 <=> 以允许 native 排序:

class Leader < Struct.new(:rank, :user)
def <=>(other)
self[:rank] <=> other[:rank]
end
end

然后你可以这样做:

leaders.sort()

如果您包括Comparable ,它也会提供其他比较运算符。

关于ruby-on-rails - 对结构体数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2870104/

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