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

jas*_*328 2 ruby arrays sorting hash

我有一系列哈希:

[{number: 1},{number: 2}, {number: 3}, {number: 4}]
Run Code Online (Sandbox Code Playgroud)

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

[3,4,1,2]
Run Code Online (Sandbox Code Playgroud)

因此,结果应该是:

[{number: 3},{number: 4}, {number: 1}, {number: 2}]
Run Code Online (Sandbox Code Playgroud)

我知道sort_by存在,但我只用它来升序和降序.

我可能会疯狂而不用担心性能,但有没有一种有效的方法可以通过数组来定制基于自定义顺序的哈希数组?

Jam*_*Lim 5

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

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}]
Run Code Online (Sandbox Code Playgroud)

  • `output = hash.values_at(*order)` (2认同)