在每个数组轨道中查找重复项

时间:2010-11-29 15:23:05

标签: ruby-on-rails arrays unique distinct-values


<%@ sp_references.each do | sp_ref | %GT;
 <%sp_ref.all_references.each_with_index do | tax_ref,i | %GT;   <%if(tax_ref.reference.uniq)&& (tax_ref.reference!〜/ emend $ / i)%>    <%= tax_ref.reference%>   <%端%GT;  <%端%GT; <%端%GT;


这个'uniq'选项在tax_ref.reference中获取不同的元素是行不通的。它为#显示“未定义的方法`uniq'

3 个答案:

答案 0 :(得分:0)

在我看来,tax_ref.reference不是数组。应该在数组上调用uniq。试试这个:

<% sp_ref.all_references.keys.uniq.each do |tax_ref| %>
    <%if (tax_ref.reference !~ /emend$/sp_ref.all_references[tax_ref]) %>
        <%= tax_ref.reference %>
    <%end%>
<% end %>

答案 1 :(得分:0)

uniq是任何可枚举对象(数组)的方法。所以你不能在tax_ref的参考对象上调用它。

相反,您需要在sp_ref.all_references上调用它,例如sp_ref.all_references.uniq.each

当只复制一个属性(非唯一)时,此SO Question有一些关于过滤掉重复对象的建议。

答案 2 :(得分:0)

<%arr = Array.new %> <% @sp_references.each do |sp_ref| %> <% sp_ref.all_references.each_with_index do |tax_ref, i| %>  <%if (tax_ref.reference !~ /emend$/i) %>  <% arr.push("#{tax_ref.reference}") %> <%end%>  <%end%>  <%end%> <%= arr.uniq %>

它对我有用。