[Home] > Snippets  > Languages  > JavaScript  > Arrays  >  Get all subsets of an array

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]]