Get all subsets of an array
JavaScript
const getSubsets = (arr) => arr.reduce((prev, curr) => prev.concat(prev.map((k) => k.concat(curr))), [[]])
TypeScript
const getSubsets = <T,>(arr: T[]): T[][] =>
arr.reduce((prev, curr) => prev.concat(prev.map((k) => k.concat(curr))), [[]] as T[][])
Examples
getSubsets([1, 2]) // [[], [1], [2], [1, 2]]
getSubsets([1, 2, 3]) // [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]