Fonction qui renvoie un tableau de combinaisons de tableaux

J'essaie de créer une fonction _.combinations (underscore mixin) qui prend trois paramètres arr, pockets, duplicates . Voici un test que j'ai conçu pour montrer comment le comportement devrait être.

 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]]) 

Je me demandais avant d'aller et créer cette fonction si elle existait déjà dans une bibliothèque. Peut-être que cette fonction spécifique a déjà un nom dont je ne connais pas.

Y a-t-il quelque chose qui fait cela?

Cette bibliothèque a une bonne fonction. Je pense que c'est à peu près ce dont vous avez besoin.

 var combinatorics=require('/path/to/combinatorics'); var a = [1,2,3]; var ans1=combinatorics.permutation(a,2); console.log(ans1.toArray());// [[1,2],[2,1],[1,3],[3,1],[2,3],[3,2]] like when duplicates is set to true var ans2=combinatorics.combination(a,2); console.log(ans2.toArray());//[[1,2],[2,1],[1,3],[3,1],[2,3],[3,2]] like when duplicates is set to false