首页 > 解决方案 > Ruby - 如何删除哈希数组中的重复项?

问题描述

我在哈希数组中有一个哈希数组。我想根据内部数组的值删除重复项。

topics = [{"defense"=>
   [{:id=>30,
     :source=>"Hacker News",
     :title=>
      "China-based campaign breached satellite, defense companies: Symantec",
     :link=>
      "https://www.reuters.com/article/us-china-usa-cyber/china-based-campaign-breached-satellite-defense-companies-symantec-idUSKBN1JF2X0"}]},
 {"companies"=>
   [{:id=>30,
     :source=>"Hacker News",
     :title=>
      "China-based campaign breached satellite, defense companies: Symantec",
     :link=>
      "https://www.reuters.com/article/us-china-usa-cyber/china-based-campaign-breached-satellite-defense-companies-symantec-idUSKBN1JF2X0"}]},
 {"Symantec"=>
   [{:id=>30,
     :source=>"Hacker News",
     :title=>
      "China-based campaign breached satellite, defense companies: Symantec",
     :link=>
      "https://www.reuters.com/article/us-china-usa-cyber/china-based-campaign-breached-satellite-defense-companies-symantec-idUSKBN1JF2X0"}]}]

topics.uniq { |phrase, post| post }
puts topics

您可以在上面看到短语defensecompaniesSymantec每个都包含相同的数组。我怎样才能只保留包含一个相同数组的第一个哈希?

预期输出:

{"defense"=>
  [{:id=>30,
    :source=>"Hacker News",
    :title=>
     "China-based campaign breached satellite, defense companies: Symantec",
    :link=>
     "https://www.reuters.com/article/us-china-usa-cyber/china-based-campaign-breached-satellite-defense-companies-symantec-idUSKBN1JF2X0"}]}

注意:在上面的例子中,每个“短语”的内部数组只包含一个哈希,但在应用程序中它可以包含多个帖子。

标签: arraysruby

解决方案


topics.invert.invert将散列减少到每个唯一值的单个(任意选择)键。


推荐阅读