我有一个包含OpenStruct元素的数组。
我想按id属性对它们进行排序,但不是按数字顺序排序,我可以通过以下方式实现:
a.sort! { |x,y| x.id <=> y.id }
我需要的顺序,因为没有逻辑,所以我有一个数组,让我们说:
order = ['4','32','1','3','5']
我想以这种方式订购我的a
数组。
每个a[x]
中包含的所有数据都是具有.id
属性的OpenStruct。
答案 0 :(得分:0)
不清楚您是否有数字或字符串作为属性。如果是前者,那么就做
order.map!(&:to_i)
第一。然后做:
a.sort_by!{|e| order.index(e.id)}
如果没有重复项,请改为:
order & a.map(&:id)