Javascript 字符串置换函数工作不正常

Javascript 字符串置换函数工作不正常,javascript,permutation,Javascript,Permutation,首先,很抱歉我之前多次被问到一个问题,但我必须说,我确实阅读了有关字符串排列的相关问题,我无法找出下面代码的实际问题。我想返回字符串的组合。请帮我找出错误!PS:我刚刚开始学习javascript var结果=[]; 函数doPerm(前缀、后缀、结果){ 如果(后缀.length==0) 结果推送(前缀); 否则{ 对于(i=0;i

首先,很抱歉我之前多次被问到一个问题,但我必须说,我确实阅读了有关字符串排列的相关问题,我无法找出下面代码的实际问题。我想返回字符串的组合。请帮我找出错误!PS:我刚刚开始学习javascript

var结果=[];
函数doPerm(前缀、后缀、结果){
如果(后缀.length==0)
结果推送(前缀);
否则{
对于(i=0;iconsole.log(permolone('aab'))这有点像是在一张纸的背面思考

for(i;i<string.length;i++) {
      var s = string.slice(i,i+1);
      var c = string.charAt(i);
      var q = s.split("");

      for(b=0;b<q.length;b++) {

          var newArray = q.slice();
          newArray.splice(b,0,c);
          result.push(newArray.join());
      }
}

for(i;i您的逻辑是正确的实际上,您刚刚在for循环中声明了
i
而没有
var
,这使其成为全局性的,并给您带来了错误。一旦得到纠正,它似乎就起作用了:

var结果=[];
函数doPerm(前缀、后缀、结果){
如果(后缀.length==0)
结果推送(前缀);
否则{
对于(变量i=0;ilog(permolone('aab'));
因此您希望重新运行aab的所有组合,例如aab、aba、baaetc@RichardHousham是的!完全正确!我会检查我的答案!它不起作用。它会为字符串“aab”生成a、a、a、b、b的结果。好了,有一些重复项,但由于在问题中没有说清楚,我感到很抱歉。我所期望的是输出:[aab,aab,baa,baa,aba,aba]作为输入“aab”的结果!(字符串“aab”的所有可能组合)。不过感谢您的即时响应!是的,这就是您得到的结果,您可以将其包装在函数中,但代码是相同的
<script>

var string = "aab";
var result = []; 

for(i=0;i<string.length;i++) {
      var c = string.charAt(i);

      var q = string.split("");
      q.splice(i,1);

      console.log("first");
      console.log(q);
      console.log(c);

      for(b=0;b<q.length;b++) {



          var newArray = q.slice();
          newArray.splice(b,0,c);
          result.push(newArray.join());
      }
}


console.log(result);

</script>