如何获取数组元素中最常见的数据类型(即类)?例如,对于此数组:
array = [nil, "string", 1, 3, 0.234, 25, "hot potato"]
Integer
应该返回,因为它是最常见的类。
答案 0 :(得分:7)
array.group_by(&:class).max_by{|k, v| v.length}.first
# => Integer
答案 1 :(得分:4)
array.each_with_object(Hash.new(0)) { |e,h| h[e.class] += 1 }.
max_by(&:last).
first
#=> Integer
第一步是
array.each_with_object(Hash.new(0)) { |e,h| h[e.class] += 1 }
#=> {NilClass=>1, String=>2, Integer=>3, Float=>1}
答案 2 :(得分:1)
跟随也可以,
array.inject(Hash.new(0)) { |h,v| h[v.class] += 1; h }.max_by(&:last).first