2014-08-30 3 views
0

나는 당신에게 배열 준 경우 :중복 인쇄 및 루비 배열에서 중복의 양

['apples', 'bananas', 'apples','apples','apples', 'cat', 'dog', 'dog', 'troll']

을 말했다 :

는 각 항목 밖으로 이름을 저를 인쇄하고 얼마나 자주 그들은 출품자가 나타나도록 출연했습니다 :

apples 4 
bananas 1 
cat 1 
dog 2 
troll 1 

어떻게하면 좋을까요?

답변

3

다음과 같이 수행 - 그 자체를 반환하는 방법에 대한 대체로서

array = [ 
     'apples', 'bananas', 'apples','apples', 
     'apples', 'cat', 'dog', 'dog', 'troll' 
     ] 

array.group_by(&:to_s).each do |k,v| 
    puts "#{k} #{v.size}" 
end 
# >> apples 4 
# >> bananas 1 
# >> cat 1 
# >> dog 2 
# >> troll 1 
+1

좋은 당신이 사용했던'to_s'. – sawa

+1

@sawa 예 ... 모두가 * 문자열 *입니다. 그래서 제가 사용했습니다. 그러나 * array *가 다른 객체의 조합 인 경우 작동하지 않습니다. :-) –

+2

'Object # itself' 곧 나옵니다. – sawa