如何获得元素间最普通的类

时间:2019-01-28 06:41:15

标签: ruby

如何获取数组元素中最常见的数据类型(即类)?例如,对于此数组:

array = [nil, "string", 1, 3, 0.234, 25, "hot potato"]

Integer应该返回,因为它是最常见的类。

3 个答案:

答案 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