如果我在Ruby中有一个数组,就像这样:
["foo", "bar", "bat"]
如何使用每个值组合生成一个新数组?
我需要输出看起来像这样:
["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]
订单并不重要。此外,我不需要 {/ 1>}和"foo-bar"
。
原始阵列最多可包含5-6名成员。
答案 0 :(得分:5)
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"]
答案 1 :(得分:2)
您可以尝试查看两个数组的交叉产品
arr = %w(foo bar bat)
arr.product(arr).collect{|el| el.uniq.join("-")}