我有一个对象数组,需要根据属性的值对它们进行排序。排序的顺序在第二个数组中给出。
a = [ object1, object2, object3, object4]
object1.job = 'ER'
object2.job = 'AD'
object3.job = 'WE'
object4.job = 'ER'
b = ['ER', 'ER', 'WE', 'AD']我需要对数组a进行排序,以便它返回[object1/object4, object3, object2]。如何使用数组b作为排序的键?
发布于 2014-10-04 02:26:29
这应该是可行的:
sorted_a = a.sort_by { |obj| b.index obj.job }注意,b不需要有多个ER副本;它只需要指出ER在WE和AD之前。
b = ['ER', 'WE', 'AD']index函数返回其参数在其调用对象中的位置:
b.index 'ER' #=> 0
b.index 'AD' #=> 2sort_by方法在数组的每个元素上运行所提供的块,并使用结果作为排序依据。
https://stackoverflow.com/questions/26184561
复制相似问题