如果我在Ruby中有一个数组,如下所示:
["foo", "bar", "bat"]如何使用每个值组合生成一个新数组?
我需要输出如下所示:
["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]秩序并不重要。另外,我不需要"foo-bar"和"bar-foo"。
原始数组最多可能有5-6个成员。
发布于 2012-06-05 16:09:45
ar = ["foo", "bar", "bat"]
p 1.upto(ar.size).flat_map {|n| ar.combination(n).map{|el| el.join('-')}}
#=>["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]发布于 2012-06-05 16:04:29
您可以尝试查看这两个数组的交叉乘积。
arr = %w(foo bar bat)
arr.product(arr).collect{|el| el.uniq.join("-")}https://stackoverflow.com/questions/10900636
复制相似问题