订购一个包含另一个数组的OpenStructs的数组

时间:2015-11-16 13:57:41

标签: arrays ruby sorting

我有一个包含OpenStruct元素的数组。

我想按id属性对它们进行排序,但不是按数字顺序排序,我可以通过以下方式实现:

a.sort! { |x,y| x.id <=> y.id }

我需要的顺序,因为没有逻辑,所以我有一个数组,让我们说:

order = ['4','32','1','3','5']

我想以这种方式订购我的a数组。

每个a[x]中包含的所有数据都是具有.id属性的OpenStruct。

1 个答案:

答案 0 :(得分:0)

不清楚您是否有数字或字符串作为属性。如果是前者,那么就做

order.map!(&:to_i)

第一。然后做:

a.sort_by!{|e| order.index(e.id)}

如果没有重复项,请改为:

order & a.map(&:id)