function permute(arr){
var rst=[],cur=[]
function fn(arr){
var ch
for(var i=0;i<arr.length;i++){
ch=arr.splice(i,1)[0]
cur.push(ch)
if(arr.length==0){
rst.push(cur.slice())
}
fn(arr)
arr.splice(i,0,ch)
cur.pop()
}
return rst
}
return fn(arr)
}
console.log(permute([1,2,3]))
// [ [ 1, 2, 3 ],
// [ 1, 3, 2 ],
// [ 2, 1, 3 ],
// [ 2, 3, 1 ],
// [ 3, 1, 2 ],
// [ 3, 2, 1 ] ]