ruby - 如何通过自定义排序顺序对数组进行排序?

标签 ruby arrays sorting hash

我有一个哈希数组:

[{number: 1},{number: 2}, {number: 3}, {number: 4}]

我需要根据自定义顺序对它们进行排序:

[3,4,1,2]

因此,结果应该是:

[{number: 3},{number: 4}, {number: 1}, {number: 2}]

我知道 sort_by 存在,但我只将它用于升序和降序。

我可能会发疯而不用担心性能,但是有没有一种有效的方法可以通过数组根据自定义顺序对这个哈希数组进行排序?

最佳答案

根据人们如何解释问题,可能的解决方案可能是:

input  = [{number: 6},{number: 10}, {number: 2}, {number: 8}]
hash   = Hash[input.map { |h| [h[:number], h] }]
order  = [8,10,6,2]
output = hash.values_at(*order)
# => [{:number=>8}, {:number=>10}, {:number=>6}, {:number=>2}]

关于ruby - 如何通过自定义排序顺序对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535488/

相关文章:

sorting - Access VBA OpenForm 分组和排序

c - 改进排序目录的名字和姓氏的打印

ruby - 如何修复因编码错误 : "\xD8" on US-ASCII? 而失败的 Ruby 脚本

arrays - 将字符串存储在 ruby​​ 的数组中

ruby - Array.first 与 Ruby 中的 Array.shift

java - 如何从数组中删除一些元素?

javascript - PHP - JSON 字符串的 json_decode() 为空

ruby - 方法调用参数中的冒号 - Ruby

arrays - 快速检索 JSON 数据

algorithm - 有效的函数排序