Gaara_sand1,
было [1, 2, 3]
извлекли 1 "умножили" на все комбинации [2, 3]
было [2, 3] извлекли 2 "умножили" на все комбинации [3] и т.д.
function perms(xs){
var r=[];
for (var i=0;i<xs.length;i++){//[1, 2, 3]
var xs_ = xs.slice(),//[2, 3]
x = xs_.splice(i, 1),//1
ps = xs_.length ? perms(xs_) : [[]];//все комбинации
r.push(...ps.map(p=>x.concat(p)));// "умножили"
}
return r;
}
как то так...