Just thought I’d share a function which has been really useful to me,
for 2
reasons
- It could easily help someone else
- People might be able to make it work better or point out where it’s
not
optimal
class Array
Groups elements of an array based on a user-defined condition
Each element from this array is passed to the block, and the
returned value
determines the key under which it will be stored in the output hash
If no block is given then the array indices will be used as the hash
keys
def group_by
hsh = {}
self.dup.each_with_index do |element, i|
if block_given?
key = yield element
else
key = i
end
hsh[key] ||= []
hsh[key] << element
end
hsh
end
end