Как я могу получить количество экземпляров значения в массиве Rails? - PullRequest
3 голосов
/ 22 февраля 2010

скажем, у меня есть такой массив:

["white", "red", "blue", "red", "white", "green", "red", "blue", "white", "orange"]

Я хочу пройти через массив и создать новый массив, содержащий каждый отдельный цвет и количество раз, которое он появился в исходном массиве.

Итак, в новом массиве сообщалось, что «белый» появлялся 3 раза, «синий» появлялся 2 раза и так далее ...

Как мне это сделать?

Ответы [ 4 ]

6 голосов
/ 22 февраля 2010

лучше вернуть хеш ...

def arr_times(arr)
  arr.inject(Hash.new(0)) { |h,n| h[n] += 1; h }
end
4 голосов
/ 22 февраля 2010
counts = Hash.new(0)
colors.each do |color|
    counts[color] += 1
end
1 голос
/ 22 февраля 2010

Я вижу, вы пометили вопрос с помощью ruby-on-rails.

Если это модель / столбец базы данных (например, модель пользователя с атрибутом цвета), вы должны выполнять вычисления в БД:

 User.count(:all,:group=>:color).sort_by {|arr| -arr[1]}
1 голос
/ 22 февраля 2010
result = {}
hash = array.group_by{|item| item}.each{|key, values| result[key] = values.size}
p result
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...