在数组javascript中使用按位AND(&;)运算符?

在数组javascript中使用按位AND(&;)运算符?,javascript,Javascript,在这段代码中获取数组中的所有组合。有人能解释一下这段代码中的位and运算符的用途吗: function getCombinations(valuesArray) { var combi = []; var temp = []; var possibleCombis = Math.pow(2, valuesArray.length); for (var i = 0; i < possibleCombis; i++) { tem

在这段代码中获取数组中的所有组合。有人能解释一下这段代码中的位and运算符的用途吗:

function getCombinations(valuesArray)
{
    var combi = [];
    var temp = [];
    var possibleCombis = Math.pow(2, valuesArray.length);
    
    for (var i = 0; i < possibleCombis; i++)
    {
        temp = [];
        for (var j = 0; j < valuesArray.length; j++)
        {
            if ((i & Math.pow(2, j)))
            {
                temp.push(valuesArray[j]);
            }
        }
        
        if (temp.length > 0)
        {
            temp.push (temp.reduce(getSum));
            combi.push(temp); 
        }
    }
    
    console.log(combi.join("\n"));
    return combi;
}
函数getCombinations(valuesArray)
{
var combi=[];
var-temp=[];
var-possibleCombis=Math.pow(2,值ray.length);
对于(变量i=0;i0)
{
温度推送(温度降低(getSum));
组合推力(温度);
}
}
console.log(combi.join(“\n”);
返回组合;
}

这看起来像是错误地尝试进行位计算并检测位标志,但它可能会起作用,至少对
j
的合理值是如此


我建议使用位移位运算符,如
1代码的用途是什么?@FelixKling目的是获得可能的组合扫描您请解释最后一部分如何使用位AND运算符?想象一下
abcd
它们被映射到
8421
的位,因此在计算时,它会变成
1
2
12
4
14
24
124
8
等等。这只是以2为基数计算。