删除在相同索引处具有重复值的子数组

时间:2016-05-29 00:38:21

标签: ruby-on-rails arrays ruby duplicates

我有一个多维数组,其中包含有关各种对象的大量信息。我想删除包含类似信息的第一个数组实例:

multi_array = [
  ["Nissan", "Altima", "tan", "2016", "80000"], 
  ["Ford", "F-150", "silver", "2012", "120000"], 
  ["Nissan", "Altima", "red", "2009", "50000"], 
  ["Audi", "A4", "blue", "2014", "30000"]
]

在上面的示例中,我想删除其中包含“Altima”实例的任何子数组,以便结果为:

fixed_multi_array = [
  ["Nissan", "Altima", "tan", "2016", "80000"], 
  ["Ford", "F-150", "silver", "2012", "120000"], 
  ["Audi", "A4", "blue", "2014", "30000"]
]

在ruby(或Ruby on Rails)中执行此操作的最快方法是什么?

更新

应该澄清一点,我希望根据一个总是在子数组的相同位置的值进行重复数据删除。因此,在上面的示例中,我总是希望仅对子阵列的位置1中的值进行重复数据删除。

2 个答案:

答案 0 :(得分:6)

您可以使用uniq

fixed_multi_array = multi_array.uniq{|x| x[1]}

Demonstration

答案 1 :(得分:0)

以下是另一种方法:

multi_array.group_by {|i| i[1]}.values.map(&:first)