这里我编写了一个程序,它将找到所有子集数组,就像数组是
[1, 2, 3]
一样,我想要像 [[], 2],, 2, , [2, 1], 3, , [3, 1], [3, 2], [3
这样的输出
我编写了一个表示二进制逻辑表示的程序。输出没有达到预期。
您能纠正和修改那个程序吗?
const getAllSubsets = arr => {
let n = arr.length
let add = []
for (let i = 0; i < (1 << n); i++) {
for (let j = 0; j < n; j++) {
if ((1 << j) & i) {
add.push([arr[j]])
}
}
}
return add
}
console.log(getAllSubsets([1,2,3]))
您可以采用递归方法并获取具有未定义加上其余部分以及值加上其余部分的数组。
const
getAllSubsets = ([value, ...rest]) => {
const sub = rest.length ? getAllSubsets(rest) : [[]];
return [
...sub.flatMap(a => [[undefined, ...a]]),
...sub.flatMap(a => [[array[0], ...a]]),
];
};
console.log(getAllSubsets([1, 2, 3]));
.as-console-wrapper { max-height: 100% !important; top: 0; }