计算 Ruby 数组中相同的字符串元素
Count the identical string elements in Ruby array
我找不到解决这个问题的简单方法
例如我们有一个数组:
["a", "a", "a", "a", "a", "b", "b", "c", "a", "a", "a"]
我需要这样计算相同的元素:
[["a", 5], ["b", 2], ["c", 1], ["a", 3]]
使用 chunk
方法对相同的元素进行分组,然后使用 map
将 [letter, array]
对转换为 [letter, count]
。
arr = ["a", "a", "a", "a", "a", "b", "b", "c", "a", "a", "a"]
counted = arr.chunk { |x| x }.map { |a, b| [a, b.count] }
# => [["a", 5], ["b", 2], ["c", 1], ["a", 3]]
在 Ruby 2.2 中你可以使用 Enumable#slice_when:
arr = ["a", "a", "a", "a", "a", "b", "b", "c", "a", "a", "a"]
arr.slice_when { |e,f| e!=f }.map { |a| [a.first, a.size] }
#=> [["a", 5], ["b", 2], ["c", 1], ["a", 3]]
我找不到解决这个问题的简单方法
例如我们有一个数组:
["a", "a", "a", "a", "a", "b", "b", "c", "a", "a", "a"]
我需要这样计算相同的元素:
[["a", 5], ["b", 2], ["c", 1], ["a", 3]]
使用 chunk
方法对相同的元素进行分组,然后使用 map
将 [letter, array]
对转换为 [letter, count]
。
arr = ["a", "a", "a", "a", "a", "b", "b", "c", "a", "a", "a"]
counted = arr.chunk { |x| x }.map { |a, b| [a, b.count] }
# => [["a", 5], ["b", 2], ["c", 1], ["a", 3]]
在 Ruby 2.2 中你可以使用 Enumable#slice_when:
arr = ["a", "a", "a", "a", "a", "b", "b", "c", "a", "a", "a"]
arr.slice_when { |e,f| e!=f }.map { |a| [a.first, a.size] }
#=> [["a", 5], ["b", 2], ["c", 1], ["a", 3]]