mauss
Version:
lightweight, modular, type-safe utilities
15 lines (14 loc) • 474 B
JavaScript
/** generate all possible permutations from all items in an array */
export function permutation(input, fn) {
const results = [];
const permute = (arr, m = []) => {
if (!arr.length)
return results.push(fn ? fn(m) : m);
for (let i = 0; i < arr.length; i++) {
const curr = arr.slice();
const next = curr.splice(i, 1);
permute(curr, m.concat(next));
}
};
return permute(input), results;
}