如何按两个条件对 ruby​​ 数组进行排序

2023-12-11

我想通过两个不同的条件对该数组进行排序。

首先,我想按类型对数组进行排序:类型可以是 (1,2,3,4),我想按 4 - 1 - 2 - 3 的顺序对它们进行排序。

然后,在每种不同的类型中,我想按百分比降序对它们进行排序。

因此,排序后的数组将如下所示:

[
  <OpenStruct percent=70, type=4>,
  <OpenStruct percent=60, type=4>,
  <OpenStruct percent=50, type=4>,
  <OpenStruct percent=73, type=1>,
  <OpenStruct percent=64, type=1>,
  <OpenStruct percent=74, type=2>
]ect

我怎样才能完成这种工作?目前我只能按类型降序排序。

array = array.sort_by {|r| r.type }

这应该可以做到:

require 'ostruct'
arr = [
  OpenStruct.new(percent: 73, type: 1),
  OpenStruct.new(percent: 70, type: 4),
  OpenStruct.new(percent: 60, type: 4),
  OpenStruct.new(percent: 50, type: 4),
  OpenStruct.new(percent: 64, type: 1),
  OpenStruct.new(percent: 74, type: 2)
]


puts arr.sort_by { |a| [a.type % 4, -a.percent] }

output:

#<OpenStruct percent=70, type=4>
#<OpenStruct percent=60, type=4>
#<OpenStruct percent=50, type=4>
#<OpenStruct percent=73, type=1>
#<OpenStruct percent=64, type=1>
#<OpenStruct percent=74, type=2>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何按两个条件对 ruby​​ 数组进行排序 的相关文章

随机推荐

  • 如何删除数据框中同时出现在两列中相同的行?

    我有一个数据框 DF1 Id1 Id2 0 286 409 1 286 257 2 409 286 3 257 183 在这个 DF 中 对我来说行286 409 and 409 286是一样的 我只想保留其中一行 我所做的所有这一切都是使
  • 事件处理程序是否会阻止垃圾收集的发生?

    如果我有以下代码 MyClass pClass new MyClass pClass MyEvent MyFunction pClass null pClass 会被垃圾回收吗 或者它会在事件发生时继续触发事件吗 我需要执行以下操作才能允许
  • 存储访问框架,takePersistableUriPermission

    在我的应用程序中 用户可以选择下载目录 如果他选择外部可拆卸SD 卡 不是模拟的 SD 卡 而是内存 例如真正的物理 microSD 卡 从 Android 4 4 开始我只能使用以下命令对其进行写入SAF 存储访问框架 我已经弄清楚如何使
  • 同一模型中的 has_many 和 Belongs_to

    我有一个模型用户 它有一个 角色 属性 可以填充 员工 或 经理 现在我想要一种关系 其中经理拥有 许多员工 而员工属于 经理 是否可以在同一模型中执行此操作 我可以想到这样的事情 has many employees class name
  • 按顺序进行控制

    我正在使用表单的文本字段创建一个 XML 文件 当我使用For Each loop For each Ctrl in Me Controls dosomething Next 它不按顺序排列它们 也就是说 它首先需要TextBox在中间 然
  • MySQL:选择查询执行和结果获取时间随着连接数量的增加而增加

    我的服务器应用程序通过单独的线程与 MySQL 建立多个连接 每个连接都会触发一个SELECT查询并获取结果 然后应用程序将其返回给其连接的用户 我正在使用InnoDB 令我惊讶的是 我发现很奇怪的是 如果我增加 MySQL 的连接数量 查
  • 取消选择后无法再次选择选项

    我有一个输入 id quickS 和一个选择 id lbSLI L 元素 如下所示 我的 Jquery 代码如下 document ready function quickS keyup function lbSLI L option se
  • 如何在 Python 3 的方法装饰器中调用 super ? [复制]

    这个问题在这里已经有答案了 我该如何填写 def ensure finished iterator try next iterator except StopIteration return else raise RuntimeError
  • R 中存在错误的单纯形函数的基本示例

    早上好 我有一个优化问题 我无法在 R 中解决 但在 Excel 中解决 我想优化以下情况 物资和人员的运输 航空公司x1可运输50吨物资和500人航空公司x2可运输150吨物资和250人 50x1 150x2 gt 900 gt 材料运输
  • NUnit 在 TFS 构建中加载失败

    我遇到了 构建部分成功 问题 并出现此错误 NUnit 无法加载 e Builds 184 CSTax 706USServices Test bin Calc Tests dll 但该项目中的所有单元测试都运行并且通过 全绿色 搭建环境 1
  • 如何使用 Jpackage 为 JavaFX 应用程序制作分发格式

    由于 jar 不再是分发 JavaFX 项目的最佳格式 我愿意使用 JPackage 工具来代替 但在阅读这篇文章后 https stackoverflow com a 68823040 4262407 我最终有多个问题 但首先 我只是想确
  • 在java中使用GZIPOutputStream发送压缩块

    我试图通过 java 套接字发送压缩的 HTML 文件 但浏览器显示一个空的 HTML 文件 问题是 当我尝试发送未压缩的 HTML 时 发现一切正常 是的 我确实相应地修改了 HTTP 标头 private void sendRespon
  • ASP Classic 无法在 IIS 7 上使用 FileSystemObject 访问虚拟目录

    我有一个经典的 ASP 网站 我们已从 IIS 6 迁移到 Win2k8 和 IIS 7 在网站文件夹结构中 有一个名为 Products 的虚拟目录 其中包含物理存储在同一服务器上其他位置的 JPG 在 Web 浏览器中 任何产品 JPG
  • 验证 HTML 中的信息 - 代码定位

    我无法让代码验证正常工作 我已经编写了姓名和电子邮件地址的验证 但是 我不知道在哪里插入命令以便在我的主 html 中调用 php 代码 我想我必须在这样的表单中添加一个操作 div class logo div div class log
  • 启动 angular.bootstrap 后取消引导? [关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 尝试重新编译角度应用程序时遇到问题 有没有办法在调用 angular bootstrap 后取消引导 一旦我在已经引导的情况下执行 angular bootstrap 就会导致错误 T
  • 最小化时 pywin32 / pywinauto 在远程桌面中无法正常工作

    我有一个 Jenkins 管道 它在远程服务器中执行一个程序 该服务器使用 pywin 来操作应用程序以进行功能测试 当我打开远程桌面时 我的应用程序运行得很好 但是当我关闭远程桌面并从 Jenkins 运行它时 应用程序就会丢失 我所做的
  • PHP 短三元(“Elvis”)运算符与空合并运算符

    有人可以解释一下之间的区别吗三元运算符简写 and 空合并运算符 在 PHP 中 他们什么时候表现不同 什么时候表现相同 如果真的发生了 a b VS a b Elvis 如果第一个参数包含 true ish 值 则返回它 查看哪些值被认为
  • 如何将上传文件保存到另一台服务器

    我目前正在使用 django 现在我需要将用户上传的文件保存到另一台服务器 该服务器不是为 django 应用程序提供服务的服务器 该文件将保存到文件系统而不是数据库 有人可以告诉我该怎么做吗 默认 Django 行为是将文件保存在文件系统
  • C# 中图像过滤的高速性能

    我有位图 我想对我的位图应用中值过滤器 但我不能使用 GetPixel 和 SetPixel 因为速度对我来说非常重要 我需要非常快速的方法来做到这一点 也许可以通过Graphics DrawImage Image Point Rectan
  • 如何按两个条件对 ruby​​ 数组进行排序

    我想通过两个不同的条件对该数组进行排序 首先 我想按类型对数组进行排序 类型可以是 1 2 3 4 我想按 4 1 2 3 的顺序对它们进行排序 然后 在每种不同的类型中 我想按百分比降序对它们进行排序 因此 排序后的数组将如下所示