使用`uniq`和`tally`快速探索你的数据(两种方法)

239 阅读1分钟

对于用户输入的数据,你可能想回答的一个常见的问题是:哪些值被输入了,每个值被使用了多少次?

也许你有一个下拉选项的列表,你想调查删除一个很少使用的选项。

Ruby有两个方便的方法,我经常使用:uniqtally

使用方法

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控制台中快速探索你的数据。