我有一个用户记录数组,我想根据优先级对用户进行排序,它存储在一个字符串数组中,并且这个数组总是在变化。
所以如果我有
用户 =
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/