首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成现有数组的所有组合的数组

生成现有数组的所有组合的数组
EN

Stack Overflow用户
提问于 2012-06-05 15:55:54
回答 2查看 835关注 0票数 1

如果我在Ruby中有一个数组,如下所示:

代码语言:javascript
复制
["foo", "bar", "bat"]

如何使用每个值组合生成一个新数组?

我需要输出如下所示:

代码语言:javascript
复制
["foo", "bar", "bat", "foo-bar", "foo-bat", "bar-bat", "foo-bar-bat"]

秩序并不重要。另外,我不需要"foo-bar""bar-foo"

原始数组最多可能有5-6个成员。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-05 16:09:45

代码语言:javascript
复制
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"]
票数 5
EN

Stack Overflow用户

发布于 2012-06-05 16:04:29

您可以尝试查看这两个数组的交叉乘积。

代码语言:javascript
复制
arr = %w(foo bar bat)

arr.product(arr).collect{|el| el.uniq.join("-")}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10900636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档