Javascript 置换函数变量范围错误,赢得';t更新功能范围之外的结果arr var结果=[]; 让计数=0; 设置换=函数(arr,ans,M){ 如果(ans.length==M){ 结果:推送(ans); } for(设i=0;i

Javascript 置换函数变量范围错误,赢得';t更新功能范围之外的结果arr var结果=[]; 让计数=0; 设置换=函数(arr,ans,M){ 如果(ans.length==M){ 结果:推送(ans); } for(设i=0;i,javascript,permutation,Javascript,Permutation,当Iconsole.log在if语句中时,argumentanscorrect显示置换数组,但当我将其推送到result时,它不会正确地推送它 我希望结果包含所有置换数组。您需要从数组ans获取副本。如果直接按下ans,则获取对象引用,最后该数组为空,与所有结果条目一样 var结果=[]; 让计数=0; 设置换=函数(arr,ans,M){ 如果(ans.length==M){ 结果:推(ans.slice()); // ^^^^^^^ } for(设i=0;ia.

当I
console.log
在if语句中时,argument
ans
correct显示置换数组,但当我将其推送到result时,它不会正确地推送它


我希望结果包含所有置换数组。

您需要从数组
ans
获取副本。如果直接按下ans,则获取对象引用,最后该数组为空,与所有结果条目一样

var结果=[];
让计数=0;
设置换=函数(arr,ans,M){
如果(ans.length==M){
结果:推(ans.slice());
//              ^^^^^^^
} 
for(设i=0;ia.join(“”))
var result = [];
let count = 0;
let permutation = function (arr, ans, M) {
    if (ans.length === M) {
        result.push(ans);
    } 
    for (let i = 0; i < arr.length; i++) {
        ans.push(arr[i]);
        permutation(arr.slice(0,i).concat(arr.slice(i + 1)), ans ,M);
        ans.pop()

    }
}
permutation([1,2,3], [], 3);
return result