ต่อไปนี้เป็นรูปแบบการเขียนโปรแกรมที่ใช้งานได้ดีกว่าเล็กน้อย:
array_with_lower_case_a = ["Jason", "Jason", "Teresa", "Judah", "Michelle", "Judah", "Judah", "Allison"]
hash_grouped_by_name = array_with_lower_case_a.group_by {|name| name}
hash_grouped_by_name.map{|name, names| [name, names.length]}
=> [["Jason", 2], ["Teresa", 1], ["Judah", 3], ["Michelle", 1], ["Allison", 1]]
ข้อดีอย่างหนึ่งgroup_by
คือคุณสามารถใช้เพื่อจัดกลุ่มรายการที่เทียบเท่า แต่ไม่เหมือนกันทุกประการ:
another_array_with_lower_case_a = ["Jason", "jason", "Teresa", "Judah", "Michelle", "Judah Ben-Hur", "JUDAH", "Allison"]
hash_grouped_by_first_name = another_array_with_lower_case_a.group_by {|name| name.split(" ").first.capitalize}
hash_grouped_by_first_name.map{|first_name, names| [first_name, names.length]}
=> [["Jason", 2], ["Teresa", 1], ["Judah", 3], ["Michelle", 1], ["Allison", 1]]
Enumerable#tally
ใช้ได้ ข้อมูลเพิ่มเติมที่นี่