按数组RUBY排序

whi*_*roi 2 ruby ruby-on-rails ruby-on-rails-3

sort_by_this_array = [4,2,1,3] < - 这是属性goal_id的数组.

然后我有我的

[<Todo id: 12, goal_id: 2]>, <Todo id: 13, goal_id: 2>, <Todo id: 6, goal_id: 1>, <Todo id: 7, goal_id: 2 >, <Todo id: 25, goal_id: 3 >, <Todo id: 30, goal_id: 1 >, <Todo id: 40, goal_id: 4 >] 
Run Code Online (Sandbox Code Playgroud)

结果应为:id:40,12,13,7,6,30,25

我正在考虑2个循环,这绝对不是最好的方法.

小智 6

也许尝试这种方法:

S = Struct.new(:id, :v)
a = Array.new(5) { |i| S.new(i, i) }
a.shuffle!
a.sort_by {|e| [2, 3 , 1 , 4, 0].index(e.id) }
Run Code Online (Sandbox Code Playgroud)

它将a按ID顺序返回.