Как получить самый распространенный класс среди элементов - PullRequest
0 голосов
/ 28 января 2019

Как я могу получить наиболее распространенный тип данных (т.е. класс) среди элементов массива?Например, для этого массива:

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

Integer должен быть возвращен, так как это самый распространенный класс.

Ответы [ 3 ]

0 голосов
/ 28 января 2019
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} 
0 голосов
/ 28 января 2019

Может также работать,

array.inject(Hash.new(0)) { |h,v| h[v.class] += 1; h }.max_by(&:last).first
0 голосов
/ 28 января 2019
array.group_by(&:class).max_by{|k, v| v.length}.first
# => Integer
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...