【发布时间】:2015-09-30 11:14:24
【问题描述】:
我正在尝试创建一个_.combinations 函数(下划线混合),它采用三个参数arr, pockets, duplicates。这是我设计的一个测试,旨在展示行为应该如何。
expect(_.combinations([1, 2], 1, false)).to.be.equal([[1],[2]])
expect(_.combinations([1, 2], 1, true)).to.be.equal([[1],[2]])
expect(_.combinations([1, 2, 3], 2, false)).to.be.equal([[1,2],[1,3],[2,3]])
expect(_.combinations([1, 2, 3], 2, true)).to.be.equal([[1,2],[1,3],[2,3],[2,1],[3,1],[3,2]])
expect(_.combinations([1, 2, 3, 4], 3, false)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,4],[3,4,1]])
expect(_.combinations([1, 2, 3, 4], 3, true)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,1],[2,3,4],[3,1,2],[3,4,1],[3,4,2],[4,1,2],[4,1,3],[4,2,3]])
在我去创建这个函数之前,我想知道它是否已经存在于一个库中。也许这个特定的函数已经有了一个我不熟悉的名字。
有什么东西可以做到这一点吗?
【问题讨论】:
-
作为起点,您可以使用power set 函数(只需搜索它;很多人已经为它编写了函数)来检索组合。从那里根据您的其他参数进行过滤应该相对简单
标签: javascript arrays sorting probability