See https://gist.githubusercontent.com/textarcana/5737478/raw/e255fdc9e896507210406d9641ed9e3469324a6b/array-permutation.js
/*jslint sloppy:true, white:true, vars:true, plusplus:true */
var permutation = function (collection){
var current,
subarray,
result = [],
currentArray = [],
newResultArray = [];
if (collection.length){
current = collection.shift();
result = permutation(collection);
currentArray.push(current);
result.map(function(list) {
newResultArray.push(list.slice(0));
list.push(current);
});
result.push(currentArray);
result = result.concat(newResultArray);
}
return result;
};
console.log(permutation(['a','b','c','d'])
.join('\n'));