ruby-on-rails - ruby/rails 根据字符串数组对记录数组进行排序

标签 ruby-on-rails ruby arrays sorting

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

所以如果我有 用户 =

    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

Returns the index of the first object in ary such that the object is == to obj. Returns nil if no match is found.

priority 数组不包含所有工作日,而是 3。我想,如果任何用户有 prioritypriority 数组中没有,就让这些用户放在最后一个数组中。假设,对于任何用户都有一个优先级“星期日”,那么,该用户将被赋予最低优先级。怎么样?

看表达式 priority.index(u.priority) || priority.size,现在使用上述示例,priority.index("sunday") 给出 nil右侧 || 的表达式将被评估,即 priority.size,其中 3。这就是 user 将移动到 arraytail 的方式。

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

相关文章:

ruby-on-rails - 将 Rails 路由助手作为类方法添加到类中

ruby-on-rails - 由于 sprockets 依赖性,无法安装 sprockets-es6 gem

ruby-on-rails - RSpec 无法显示消息

Ruby 数组映射(& :flatten) is causing a latency issue

c - 将 CSV 文本文件中的值输入到数组中

c - 在 C 中未正确读取带有密码的 .txt 文件

ruby-on-rails - 使用 devise_token_auth 和 active_model_serializer 时覆盖序列化程序

ruby-on-rails - 在哪里找到多个 Rails Controller 使用的方法并限制对基本 Controller 的访问

ios - 在 ios swift 中将 firebase 数据添加到数组

javascript - 如何在 Rails 4 中创建嵌套表单