Javascript 生成所提供单词的所有组合和排列

Javascript 生成所提供单词的所有组合和排列,javascript,algorithm,permutation,Javascript,Algorithm,Permutation,如何使用javascript获得所有可能的单词组合 例如,如果我有3个单词:苹果、香蕉、橘子 我需要这些词的所有独特组合,即 comb1 = Apple ; Comb2 = Banana ; Comb3 = Orange ; Comb4 = Apple + Banana ; Comb5 = Apple + Orange ; Comb6 = Banana + Orange ; Comb7 = Banana + Apple ; Comb8 = Orange + Apple ; Comb9 = Ora

如何使用javascript获得所有可能的单词组合

例如,如果我有3个单词:苹果、香蕉、橘子

我需要这些词的所有独特组合,即

comb1 = Apple ;
Comb2 = Banana ;
Comb3 = Orange ;
Comb4 = Apple + Banana ;
Comb5 = Apple + Orange ;
Comb6 = Banana + Orange ;
Comb7 = Banana + Apple ;
Comb8 = Orange + Apple ;
Comb9 = Orange + Banana ;
Comb10 = Apple + Banana + Orange ;
Comb11 = Apple + Orange + Banana ;
Comb12 = Banana + Orange + Apple ;
Comb13 = Banana + Apple + Orange ;
Comb14 = Orange + Apple + Banana ;
Comb15 = Orange + Banana + Apple ;
我需要这是动态的,即根据提供的单词数量生成组合

我尝试了下面的代码,但没有得到预期的结果

var permArr = [],result=[],aa=[],
  usedChars = [];
 var comb =['a', 'b','c'];

function permute(input) {
  var i, ch;
  for (i = 0; i < input.length; i++) {
    ch = input.splice(i, 1)[0];
    usedChars.push(ch);
    if (input.length == 0) {
      permArr.push(usedChars.slice());
    }
    permute(input);
    input.splice(i, 0, ch);
    usedChars.pop();
  }
  //return permArr
};

for(var i=0;i<comb.length;i++){
    aa=[];
    for(var j=0;j<=i;j++)

    {
        aa.push(comb[j]);
    }
    permute(aa);

}


FResult = JSON.stringify(permArr);

我的代码错过了[b,c]和[a,c]以及[b]和[c]的置换。我的permute()函数工作正常。只需要提供正确的组合


谢谢

生成置换的更有效方法

函数置换(k,curr\u perm,included\u items\u hash){
如果(k==0){
烫发推送(curr_perm);
返回;
}
for(设i=0;i
[["a"],["a","b"],["b","a"],["a","b","c"],["a","c","b"],["b","a","c"],["b","c","a"],["c","a","b"],["c","b","a"]]