ruby - 如何使用第二个数组中的值对对象数组进行排序

标签 ruby arrays sorting

我有一个对象数组,我需要按属性值对它们进行排序。排序顺序在第二个数组中给出。

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 出现在 WEAD 之前。

b = ['ER', 'WE', 'AD']

index 函数返回其参数在其调用者中的位置:

b.index 'ER'  #=> 0
b.index 'AD'  #=> 2

sort_by 方法在数组的每个元素上运行提供的 block ,并将结果用作排序依据的键。

关于ruby - 如何使用第二个数组中的值对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26184561/

相关文章:

按列中的名称对 pandas DataFrame 中的数据进行排序

ruby - 加载 RubyGems 插件时出错,openssl.bundle (LoadError)

ruby - 将字符串拆分为值数组

ruby - 批量分配 protected 属性 : user, 格式、操作、 Controller

c - 如何在 C 中声明指向字符数组的指针?

ruby 。如果日期相等,则获取数组的平均值

mysql - SQL 按不同值排序

ruby-on-rails - 我可以/应该如何处理 RoR 'datetime' "type"/"field"?

javascript - 基于对象数组中不同单位的总和值

java - 将字母与单词匹配