2014-08-30 46 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 2014-08-30 05:33:29

+1

@sawa是的......因爲所有都是*字符串* ..這就是我使用的原因。但是,如果*數組*是不同對象的組合,那麼它將無法工作。 :-) – 2014-08-30 05:34:28

+2

'Object#itself'即將推出。 – sawa 2014-08-30 05:38:10