JSFiddle - React, Tailwind, and code Playground

JavaScript

const generateSubsets = (inp) => {
  if (!Array.isArray(inp)) {
    return;
  }
  var n = inp.length;
  var allSubsets = [];

  for (var i = 0; i < (Math.pow(2, n)); i++) {
    var subset = [];

    for (var j = 0; j < n; j++) {
      if (i & (1 << j)) {
        subset.push(inp[j]);
      }
    }

    allSubsets.push(subset);
  }

  return allSubsets;
};

console.log(generateSubsets([1, 2, 3]));
// [[], [1], [2], [3], [1,2], [1,3], [2,3], [1,2,3]]