Javascript 试图从数组中生成所有置换,但只得到一小部分

Javascript 试图从数组中生成所有置换,但只得到一小部分,javascript,recursion,combinations,Javascript,Recursion,Combinations,编辑:在这个问题上,我会尽量说得更清楚: 我有一个数组[1,2,3],我想生成如下所有排列: 1,2,3 | 1,3,2 | 3,1,2 | 2,3,1 | 2,1,3 | 1 | 1,2 | 1,3 | 2,3 | 2,1 | 3 | 3,1 | 3,2 请注意,我们还需要一位数和两位数的排列,这在建议的副本中没有提到 我尝试将Python代码改编为JavaScript: 函数my_置换(lst){ 如果(lst.length==0){ 返回[] } 如果(lst.length==1){ 返

编辑:在这个问题上,我会尽量说得更清楚:

我有一个数组
[1,2,3]
,我想生成如下所有排列:

1,2,3 | 1,3,2 | 3,1,2 | 2,3,1 | 2,1,3 | 1 | 1,2 | 1,3 | 2,3 | 2,1 | 3 | 3,1 | 3,2

请注意,我们还需要一位数和两位数的排列,这在建议的副本中没有提到

我尝试将Python代码改编为JavaScript:

函数my_置换(lst){
如果(lst.length==0){
返回[]
}
如果(lst.length==1){
返回[lst]
}
变量l=[]
var-m;
var-remLst;
对于(变量i=0;i
这里有一个解决方案 这几乎是你想要的。问题是它包含一个空数组:(

函数my_置换(lst){
变量l=[]]
var-m;
var-remLst;
对于(变量i=0;iconsole.log(我的排列([1,2,3])
@Stuart我也是这么想的,但在这种情况下不是“给我解决方案”,而是“我的解决方案有一个bug”。@ZivBen或者再说一次,这是“我有一个有问题的代码,我需要帮助修复它”,而不是“给我代码”.以Hastur的名义,大家-这不是一个骗局。OP已经有了代码,不需要那个步骤。解决这个bug是另一个问题的完全不同的解决方案…@VLAZ a mod flag在这里是完全不合适的。你不应该建议这样做。Lewis flag将被拒绝。@bosskay972:你没有被禁止。有人,或者几个p人们根据自己的声誉,认为这个问题是另一个问题的重复,并且有一段时间,它被标记为这样,这意味着它无法收到答案。但从评论中可以看出,弗拉兹认为它不是重复的,并且说服了足够多的人同意它现在已经恢复正常状态。现在,理想的情况是,有些人e可以建议一个修复方案。非常感谢空数组。使用array.shift()很酷我可以删除第一个元素,这样对我来说就可以了!向上投票,如果你不介意回答的话。你正在为每个元素递归调用函数,我不明白你为什么要在内部进行concat,你能更新你的回答,解释内循环是如何工作的吗