【问题标题】:Remove subarrays having duplicate value at the same index删除在同一索引处具有重复值的子数组
【发布时间】:2016-06-02 04:40:26
【问题描述】:

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

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 中的值进行重复数据删除。

【问题讨论】:

  • 什么构成“相似”信息?例如,既然array_a 有“80000”,那么其他子数组就不能包含该值吗?这是否适用于先前子数组中的任何值?
  • 对不起,类似的信息总是在子数组的相同位置。所以,我希望从子数组的第 2 位去重复

标签: ruby-on-rails arrays ruby duplicates


【解决方案1】:

你可以使用uniq:

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

Demonstration

【讨论】:

  • 因为它是 Rails 你可以做一个免费的版本:multi_array.uniq(&:second)
【解决方案2】:

这里还有另一种方法:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-06
    • 1970-01-01
    • 2020-09-08
    • 2019-09-17
    • 2012-10-13
    • 2019-06-30
    相关资源
    最近更新 更多