我有一个像:
这样的数组hasharray=[{"a" => "b" } , {"c" => "d"} , {"e" => "f"}]
我想创建长度为min
到max
的此数组哈希的所有组合。
例如,对于min=0
和max=2
,代码应返回:
resultarray=[
{},
{"a" => "b" },
{"c" => "d"},
{"e" => "f"},
{"a" => "b" } , {"c" => "d"},
{"c" => "d"} , {"e" => "f"},
{"a" => "b" },{"e" => "f"}
]
我该怎么做?
答案 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"}]
# ]