我无法使用下面的以下代码段获得正确的输出,无法解决问题:
function powerSet(arr) {
var res = [];
var len = arr.length;
for (var i = 0; i < Math.pow(2, len); i++) {
var aux = [];
for (var j = 0; j < len; j++) {
//console.log(j +':'+((1<<j) & j));
if (((1<<j) & j) !== 0) {
aux.push(arr[j]);
}
}
res.concat(aux);
}
return res;
}
console.log(powerSet([1, 2])); // [[1], [2], [1, 2]]
答案 0 :(得分:1)
您的代码存在两个问题:
i
的二分之一而不是j
,即i & 1 << j
res.push(aux)
而不是res.concat(aux)
function powerSet(arr) {
var res = [];
var len = arr.length;
for (var i = 0; i < Math.pow(2, len); i++) {
var aux = [];
for (var j = 0; j < len; j++) {
//console.log(j +':'+((1<<j) & j));
if (i & (1 << j)) {
aux.push(arr[j]);
}
}
res.push(aux);
}
return res;
}
console.log(powerSet([1, 2])); // [[1], [2], [1, 2]]
&#13;