const powerset = (array) => {
const result = [[]];
const arrayPower = Math.pow(2, array.length);
for (let index = 1; index < arrayPower; ++index){
const subset = [];
for (let i = 0; i < array.length; i++){
const subsetPower = Math.pow(2, i);
if (index & subsetPower){
subset.push(array[i]);
}
}
result.push(subset);
}
return result;
};
for(const set of powerset([1,2,3])) console.log(`subset: ${set}`);
Y29uc3QgcG93ZXJzZXQgPSAoYXJyYXkpID0+IHsKICBjb25zdCByZXN1bHQgPSBbW11dOwoKICBjb25zdCBhcnJheVBvd2VyID0gTWF0aC5wb3coMiwgYXJyYXkubGVuZ3RoKTsKICBmb3IgKGxldCBpbmRleCA9IDE7IGluZGV4IDwgYXJyYXlQb3dlcjsgKytpbmRleCl7CiAgICBjb25zdCBzdWJzZXQgPSBbXTsKICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspewogICAgICBjb25zdCBzdWJzZXRQb3dlciA9IE1hdGgucG93KDIsIGkpOwogICAgICBpZiAoaW5kZXggJiBzdWJzZXRQb3dlcil7CiAgICAgICAgc3Vic2V0LnB1c2goYXJyYXlbaV0pOwogICAgICB9CiAgICB9CgogICAgcmVzdWx0LnB1c2goc3Vic2V0KTsKICB9CgogIHJldHVybiByZXN1bHQ7Cn07Cgpmb3IoY29uc3Qgc2V0IG9mIHBvd2Vyc2V0KFsxLDIsM10pKSBjb25zb2xlLmxvZyhgc3Vic2V0OiAke3NldH1gKTs=