Ruby: How to group a Ruby array? -
i have ruby array
> list = request.find_all_by_artist("metallica").map(&:song) => ["nothing else matters", "enter sandman", "enter sandman", "master of puppets", "master of puppets", "master of puppets"]
and want list counts this:
{"nothing else matters" => 1, "enter sandman" => 2, "master of puppets" => 3}
so ideally want hash give me count , notice how have enter sandman
, enter sandman
need case insensitive. pretty sure can loop through there cleaner way?
list.group_by(&:capitalize).map {|k,v| [k, v.length]} #=> [["master of puppets", 3], ["enter sandman", 2], ["nothing else matters", 1]]
the group creates hash capitalize
d version of album name array containing strings in list
match (e.g. "enter sandman" => ["enter sandman", "enter sandman"]
). map
replaces each array length, e.g. ["enter sandman", 2]
"enter sandman"
.
if need result hash, can call to_h
on result or wrap hash[ ]
around it.
Comments
Post a Comment