Get all subsets of an array

Build the power set, smallest subsets first.

JavaScript Version 1.0.0 · MIT · .md

get-all-subsets-of-an-array.js
function getSubsets(values) { return values.reduce((subsets, value) => subsets.concat(subsets.map(subset => [...subset, value])), [[]]); }

Input & expected output

Input

[
  "a",
  "b",
  "c"
]

Expected output

[
  [],
  [
    "a"
  ],
  [
    "b"
  ],
  [
    "a",
    "b"
  ],
  [
    "c"
  ],
  [
    "a",
    "c"
  ],
  [
    "b",
    "c"
  ],
  [
    "a",
    "b",
    "c"
  ]
]

The edge case

Input

[]

Expected output

[
  []
]

Know the limits

  • The result has 2^n subsets, so the lab accepts at most 10 values (1,024 subsets).

The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.

Source & maintenance

Based on Get all subsets of an array from the original 1loc collection by Nguyen Huu Phuoc. Copyright (c) 2020 phuoc-ng. MIT licensed.

Caps input at 10 values before building 2^n subsets. Original MDX retained as inert source evidence.

Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.

Local fixture scope · Node.js 22.23.2 · reviewed October 28, 2026. No external service is required.

Keep exploring

Type two or more characters. Try “duplicate”, “webhook” or “retry”.