我有一个对象数组,我需要按属性值对它们进行排序。排序顺序在第二个数组中给出。
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
作为排序的键?
最佳答案
这应该有效:
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' #=> 2
sort_by
方法在数组的每个元素上运行提供的 block ,并将结果用作排序依据的键。
关于ruby - 如何使用第二个数组中的值对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184561/