我有一个用户记录数组,我想根据优先级对用户进行排序,它存储在一个字符串数组中,并且这个数组总是在变化。

所以如果我有
用户 =

    User id: 1, username: "so_admin", priority: "Monday"

    User id: 2, username: "so_staff", priority: "Wednesday"

优先级 = [“星期三”,“星期二”,“星期五”]

如何对我的用户进行排序,以便首先列出优先级为“星期三”的用户等。

最佳答案

你可以这样做

users.sort_by { |u| priority.index(u.priority) || priority.size }

上面的排序已经完成,假设下面的 Array 将根据您的需要进行排序,将保存所有 uniq 值。 users 数组然后将使用排序数组的索引。
priority = ["Wednesday","Tuesday","Friday"]

index(obj) → int or nil


priority 数组并不包含所有工作日,而是 3 。我想,如果任何用户具有优先级,而 priority 数组中不存在,则将这些用户放在最后一个数组中。假设对于任何用户都有一个优先级 "Sunday" ,那么该用户将获得最低优先级。如何 ?

看看表达式 priority.index(u.priority) || priority.size ,现在有了上面提到的示例, priority.index("sunday") 给出 nil ,并且 || 的右侧表达式将被评估,即 priority.size ,其中 3 。这就是将 user 移动到数组尾部的方式。

关于ruby-on-rails - ruby/rails 根据字符串数组对记录数组进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25020892/

10-12 15:01
查看更多