Nic Lin's Blog

喜歡在地上打滾的 Rails Developer

在陣列中尋找出現最多次的方法

假設OrderItem.all會把整個訂單的明細都吐出來,但我們只想找這筆訂單裡面food_name這個欄位的最多出現次數。

螢幕快照 2016-09-20 下午2.04.54.png

想法是可以先將這個欄位的東西,都倒進Array裡面,變成陣列之後相對好處理。

實際方法在Rails 3.2之後,有了更好的method,只需對OrderItem下

array = OrderItem.pluck(:food_name)

其結果就會只將所有food_name都倒進去Array

再來要抓出在陣列裡出現最多次數的Item,就可以用max_by

array.max_by { |i| o.count(i)}

來取得結果。

參考: * Ruby: How to find item in array which has the most occurrences? * How to get a single column’s values into an array * Rails API pluck method

comments powered by Disqus