【问题标题】:Trying to display only duplicate values试图只显示重复值
【发布时间】:2011-08-30 13:16:51
【问题描述】:

我正在尝试仅显示仅包含名称的数组中的重复值。

例如,我的代码是:

  <%= s= arrayOfStuff %> 
  <%= t= arrayOfStuff.uniq %>

显示

["UK01USV005", "NJ08APP516", "NJ08MHF001", "UK01USV505", "NY01MHF0006", "UK01USV525", "UK01USV005", "NJ08APP515", "NJ08MHF002"]
["UK01USV005", "NJ08APP516", "NJ08MHF001", "UK01USV505", "NY01MHF0006", "UK01USV525", "NJ08APP515", "NJ08MHF002"]

理论上,当我执行s-t 时,它应该给我重复值,在这种情况下是UK01USV005,但是我得到的结果是一个空数组,显然看起来像这样:[]

任何想法为什么会这样?

【问题讨论】:

    标签: ruby-on-rails ruby arrays ruby-on-rails-3


    【解决方案1】:
    arrayOfStuff.group_by {|e| e}.select { |k,v| v.size > 1}.keys
    

    应该可以正常工作。

    【讨论】:

    • 对了,今天才知道group_by,对以后的参考很有帮助;-)
    • ActiveSupport for Ruby Core 中有很多不错的功能。见github.com/rails/rails/tree/master/activesupport/lib/… :)
    • 顺便说一句,现在一直在玩代码,但我似乎无法将其转换为字符串,因为我正在尝试进行比较。基本上,我有 arrayOfStuff ,它们是服务器,每个服务器都链接到一个应用程序。有些服务器有多个应用程序,但是我不想显示同一服务器的两个不同输出,而是将其连接在同一服务器下。因此,我需要能够通过遍历arrayOfStuff 将副本与数组进行比较。这有意义还是有更好的方法?
    • 这很好。赞!
    【解决方案2】:

    你错了。

    ["a", "a", "a"] - ["a"]
    #=> []
    

    你可以试试这个:

    a.inject([]){|ar, item| b.include?(item) ? b.delete(item) : ar << item; ar}
    #=> ["UK01USV005"]
    

    或使用您的原始数组

    arrayOfStuff.select{|item| arrayOfStuff.count(item) > 1}.uniq
    

    【讨论】:

    • 我更喜欢你的最后一个解决方案,而不是我的 :)
    【解决方案3】:

    从数组中减去数组会删除所有匹配的对象,而不仅仅是第一个。

    看简单的测试:

    [1,2,1] - [1] # => [2]
    

    所以,如果你想扫描重复值,你可以试试group_by(正如 lucapette 建议的更快);-)

    【讨论】:

      【解决方案4】:

      你可以这样做:

      ["UK01USV005", "NJ08APP516", "NJ08MHF001", "UK01USV505", "NY01MHF0006", "UK01USV525", "NJ08APP515", "NJ08MHF002"] && ["UK01USV005", "NJ08APP516", "NJ08MHF001", "UK01USV505", "NY01MHF0006", "UK01USV525", "UK01USV005", "NJ08APP515", "NJ08MHF002"]
      
      => ["UK01USV005", "NJ08APP516", "NJ08MHF001", "UK01USV505", "NY01MHF0006", "UK01USV525", "UK01USV005", "NJ08APP515", "NJ08MHF002"]
      

      你在找什么?

      【讨论】:

        猜你喜欢
        • 2020-08-23
        • 2021-02-06
        • 2015-11-09
        • 2018-08-14
        • 2018-01-02
        • 1970-01-01
        • 2015-09-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多