尝试仅显示重复值

oma*_*oum 4 ruby arrays ruby-on-rails ruby-on-rails-3

我试图只显示一个只包含名称的数组中的重复值.

例如,我的代码是:

  <%= s= arrayOfStuff %> 
  <%= t= arrayOfStuff.uniq %>
Run Code Online (Sandbox Code Playgroud)

哪个显示

["UK01USV005", "NJ08APP516", "NJ08MHF001", "UK01USV505", "NY01MHF0006", "UK01USV525", "UK01USV005", "NJ08APP515", "NJ08MHF002"]
["UK01USV005", "NJ08APP516", "NJ08MHF001", "UK01USV505", "NY01MHF0006", "UK01USV525", "NJ08APP515", "NJ08MHF002"]
Run Code Online (Sandbox Code Playgroud)

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

任何想法为什么会这样?

luc*_*tte 10

arrayOfStuff.group_by {|e| e}.select { |k,v| v.size > 1}.keys
Run Code Online (Sandbox Code Playgroud)

应该工作正常.


fl0*_*00r 5

你错了.

["a", "a", "a"] - ["a"]
#=> []
Run Code Online (Sandbox Code Playgroud)

你可以在你的情况下尝试这个:

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

或者使用原始阵列

arrayOfStuff.select{|item| arrayOfStuff.count(item) > 1}.uniq
Run Code Online (Sandbox Code Playgroud)