Ruby:遍历对象数组,忽略具有重复属性的项

Ruby:遍历对象数组,忽略具有重复属性的项,ruby,arrays,object,iteration,Ruby,Arrays,Object,Iteration,我在ruby中有一个对象数组,我想遍历它,忽略每个对象,它们的名称已经被处理过了。例如: [ #<Item name: "Item 1", content: "a">, #<Item name: "Item 1", content: "b">, #<Item name: "Item 2", content: "c">, #<Item name: "Item 3", content: "d">, #<Item name: "

我在ruby中有一个对象数组,我想遍历它,忽略每个对象,它们的名称已经被处理过了。例如:

[
  #<Item name: "Item 1", content: "a">,
  #<Item name: "Item 1", content: "b">,
  #<Item name: "Item 2", content: "c">,
  #<Item name: "Item 3", content: "d">,
  #<Item name: "Item 3", content: "e">
]
[
#,
#,
#,
#,
#
]
应该减少到

[
  #<Item name: "Item 1">, # Should know that it belongs to content: "a" and "b"
  #<Item name: "Item 2">, # Should know that it belongs to content "c"
  #<Item name: "Item 3">  # Should know that it belongs to content: "d" and "e"
]
[
#,#应该知道它属于内容:“a”和“b”
#,#应该知道它属于内容“c”
##应该知道它属于内容:“d”和“e”
]
一个可能的(但令人讨厌的)解决方案:

processed = []
items.each do |item|
  next if processed.include?(item.name)
  processed << item.name
  # Output ...
processed=[]
项目。每个do |项目|
下一个(如果已处理)。包括?(项目名称)
已处理请尝试以下操作:

array.group_by(&:name).map{|k, v| v.first}

具有相同名称的对象是相同的对象吗?或者它们在其他属性上有什么不同?为了简单起见,我省略了这些属性。很抱歉,可能弄错了。我只是添加了一些属性以使其更易于理解。这种解决方案是不够的,因为数组中的对象的属性确实多于名称。为了简单起见,我把它们删掉了。我编辑了我的帖子,以便你能更好地看到它。如果我能为它应该使用的对象内部的唯一属性指定一个参数,那就太合适了。这太棒了!我省略了映射,因为(正如我在附录中看到的)我需要对其他同名项的引用。但这正是我需要的。非常感谢你!(:
array.group_by(&:name).map{|k, v| v.first}