UNPKG

mauss

Version:

lightweight, modular, type-safe utilities

15 lines (14 loc) 474 B
/** 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; }