将数组拆分为数组

时间:2015-06-09 19:48:25

标签: ruby

我是Ruby的新手,想知道是否有更好的方法来解决以下问题。

我有一个如下所示的数组:

[6, 1, 3, 6, 2, 4, 1, 3, 2, 3]

我想把它变成这个:

[ [1,1], [2,2], [3,3,3], [4], [], [6,6] ]

这是我目前的解决方案(同样,我是Ruby新手):

def split_array_into_arrays(array)
  max_num = array.max
  arrays = Array.new(max_num) { Array.new }

  array.each do |num|
    arrays[num-1] << num
  end

  arrays
end

arrays = split_array_into_arrays([6, 1, 3, 6, 2, 4, 1, 3, 2, 3])
puts arrays.inspect

产地:

[[1, 1], [2, 2], [3, 3, 3], [4], [], [6, 6]]

注意:我意识到我没有处理可能的错误。

经验丰富的Ruby开发人员如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

ar = [6, 1, 3, 6, 2, 4, 1, 3, 2, 3]

(1..ar.max).map{|n| [n]*ar.count(n)}
# => [[1, 1], [2, 2], [3, 3, 3], [4], [], [6, 6]]