对于用户输入的数据,你可能想回答的一个常见的问题是:哪些值被输入了,每个值被使用了多少次?
也许你有一个下拉选项的列表,你想调查删除一个很少使用的选项。
Ruby有两个方便的方法,我经常使用:uniq 和tally 。
使用方法
uniq 方法是在一个枚举表上操作,将你的数据压缩成唯一的值:
Outreach::Task.all.map(&:status).uniq
=> ["Confirmed w/o Outreach",
"Awaiting Outreach",
"Responded",
"No Response Expected",
"Follow-up",
"Awaiting Reply"]
虽然大多数开发者都熟悉uniq ,但tally 方法是Ruby中最保守的秘密之一。tally 方法接收一个值的枚举,并返回一个哈希值,其中键是唯一的值,值是该值在列表中出现的次数:
Outreach::Task.all.map(&:status).tally
=> {"Confirmed w/o Outreach"=>106,
"Awaiting Outreach"=>28,
"Responded"=>48,
"No Response Expected"=>10,
"Follow-up"=>4,
"Awaiting Reply"=>8}
这两个方法在你的工具箱中非常有用,可以在Rails控制台中快速探索你的数据。