控制器:
@user_location = Country.joins(:user).order(:name).compact.uniq
查看(haml):
- @user_location.each do |user|
%li= user.name
此时,数组的所有重复元素都将被删除(uniq
)。
如何显示数组中重复元素的数量?例如:如果我的数组有
一二二三四
然后我需要显示
一二(2)三四
答案 0 :(得分:3)
我希望这样的事可能有用:
str_random(6)
答案 1 :(得分:2)
您需要group_by
+ map
。像这样:
array.group_by(&:itself).map do |k, v|
{ value: k, count: v.length }
end
您将拥有如下所示的哈希数组:{value: 'Two', count: 2}
。
您可以以任何所需的方式返回数据。但是,直接从SQL获取分组记录要好得多。
答案 2 :(得分:1)
您可以使用each_with_object进行迭代,在将元素分配给哈希键时对其进行计数。例如:
array = %w(One Two Two Three Four)
counts = array.each_with_object(Hash.new(0)) do |el, hash|
hash[el] += 1
end
# => {"One"=>1, "Two"=>2, "Three"=>1, "Four"=>1}
counts.map { |k, v| v > 1 ? "#{k} (#{v})" : k }
# => ["One", "Two (2)", "Three", "Four"]
这看起来像你追求的那样吗?如果没有,或者您有任何疑问,请告诉我们!
答案 3 :(得分:0)
%w[One Two Two Three Four].
group_by{|x|x}.
map{|k, v|[k,v.count>1?" (#{v.count})":nil]}.
map(&:compact).
map(&:join)
#⇒ ["One", "Two (2)", "Three", "Four"]