Массив RoR - количество идентичных элементов, включая значение - PullRequest
0 голосов
/ 07 октября 2010

как рассчитывать идентичные значения после добавления значения в массив

такой, что

a=[]

a<<1 count of 1 is 1

a<<1 count of 1 is 2

спасибо

Ответы [ 3 ]

3 голосов
/ 07 октября 2010

Вы можете сделать:

a.select{|v| v == 1}.size

Это только одно решение

1 голос
/ 07 октября 2010

Кто-то, вероятно, предложит более специализированное решение, но я бы просто уменьшил его

counts = [1,3,3].reduce({}) do |acc,n|
  acc.tap do |a|
    a[n] ||= 0
    a[n] += 1
  end
end

counts.each {|k,v| puts "#{k} was found #{v} times"}

(обратите внимание, что tap - ruby ​​1.9, и он поддерживается в activesupport)

вывод этого будет

1 найден 1 раз
3 было найдено 2 раза

0 голосов
/ 07 октября 2010

a = [1,2,3,4,5,1,2,2,3,4]

=> [1, 2, 3, 4, 5, 1, 2, 2, 3, 4]

a.uniq.each do | i |

?> Помещает i.to_s + «появился» + a.count (i) .to_s + «раз»

конец

1 появилось 2 раза

2 появилось 3 раза

3 появилось 2 раза

4 появилось 2 раза

5 появилось 1 раз

=> [1, 2, 3, 4, 5]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...