Ruby:基于整数数组对对象数组进行排序

Dav*_*age 4 ruby arrays sorting

这看起来很简单,之前应该问过,但我在Stack Overflow上找到的所有内容似乎都不起作用.我有一个包含4个对象的数组,我想按特定顺序重新排序.所以,它看起来像这样:

array = [Obj1, Obj2, Obj3, Obj4]
Run Code Online (Sandbox Code Playgroud)

我有另一个整数数组,代表索引的所需顺序:

desired_order = [2,3,0,1]
Run Code Online (Sandbox Code Playgroud)

所以我想在array正确订购后看到的是:

array = [Obj3, Obj4, Obj1, Obj2]
Run Code Online (Sandbox Code Playgroud)

我已经想到sort_by了要使用的方法,但我似乎无法提出正确的语法.任何帮助是极大的赞赏!

tok*_*and 7

数组#values_at正是您所需要的:

array.values_at(*desired_order)
Run Code Online (Sandbox Code Playgroud)


saw*_*awa 5

desired_order.map{|i| array[i]}
Run Code Online (Sandbox Code Playgroud)