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)
应该工作正常.
你错了.
["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)