创建哈希数组的组合

时间:2014-10-06 13:12:27

标签: ruby

我有一个像:

这样的数组
hasharray=[{"a" => "b" } , {"c" => "d"} , {"e" => "f"}]

我想创建长度为minmax的此数组哈希的所有组合。

例如,对于min=0max=2,代码应返回:

resultarray=[
{},
 {"a" => "b" },
{"c" => "d"},
{"e" => "f"},
{"a" => "b" } , {"c" => "d"},
{"c" => "d"} , {"e" => "f"},
{"a" => "b" },{"e" => "f"}
]

我该怎么做?

1 个答案:

答案 0 :(得分:3)

min = 0
max = 2
min.upto(max).flat_map {|n| hasharray.combination(n).to_a }
# => [
#   [],
#   [{"a"=>"b"}], [{"c"=>"d"}], [{"e"=>"f"}],
#   [{"a"=>"b"}, {"c"=>"d"}], [{"a"=>"b"}, {"e"=>"f"}], [{"c"=>"d"}, {"e"=>"f"}]
# ]