let result = []; function backTrace(nums, trace) { if(nums.length == trace.length) { result.push(trace.slice(0)); return } for(let index in nums) { let num = nums[index]; let numInTrace = false for(let j in trace) { if( num == trace[j]) { numInTrace = true } } if(numInTrace) continue trace.push(num) backTrace(nums, trace) trace.pop() } } function permut(nums) { backTrace(nums, []); return result; } permut([1,2]) console.log(result)