Ruby 数组 - 返回重复和非重复对象的集合

标签 ruby arrays algorithm logic

我有一组具有以下属性的 Race 对象:

  • 方式
  • race_period_id
  • track_id

我想收集那些 Race 对象——其中 way 和 track_id 属性值相同——在一个名为 plural_array 的新数组中。 (基本上,每个重复的 Race 对象都由 way 和 track_id 定义。)在另一个名为 singular_array 的数组中,我想收集所有那些不重复的 Race 对象。

例如,假设我有四个具有以下属性值的 Race 对象:

种族 1:

  • 方式= 1
  • race_period_id = 20304
  • track_id = 94949

比赛 2:

  • 方式 = 2
  • race_period_id = 20888
  • track_id = 94949

第三场比赛

  • 方式 = 1
  • race_period_id = 20899
  • track_id = 94949

第四场比赛

  • 方式 = 1
  • race_period_id = 20888
  • track_id = 885858

所以这里我有两个“复数”对象:种族 1 和种族 3。还有两个“奇异”对象:race2 和 race4。

如果我有一个名为 get_plural_and_singular_arrays(races_array) 的方法,我将使用什么算法返回一个 plural_array(仅包含对象 race 1 和 race3)和一个 singular_array(仅包含对象 race2 和 race4)?

def get_plural_and_singular_arrays(races_array)
  # algorithm here

  return plural_array, singular_array
end

最佳答案

您可以从使用 group_by 开始,然后将其结果组织成单打和 double :

list.group_by do |i|
  [ i.way, i.track_id ]
end.values.group_by do |list|
  list.length > 1
end

对于多个条目和单个条目,您应该有一个包含键 truefalse 的散列。

关于Ruby 数组 - 返回重复和非重复对象的集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6884888/

相关文章:

Python:使用负函数比较元胞数组

PHP 对象数组 - 尝试提取 key

java - 基本算法的复杂性?

javascript - 找出 4 个百分比之间的所有可能性

ruby-on-rails - 在 click rails 上再添加一组相同的输入

c - 从 C 中的数组中删除元素

ruby - 如何更快地解决 project euler #21?

c++ - 联赛赛程算法讲解

ruby - 从对象数组中提取 ruby​​ 哈希元素值

javascript - 在 Rails 服务器端运行 javascript