Javascript 使用array.reduce计算数组的二进制

Javascript 使用array.reduce计算数组的二进制,javascript,arrays,binary,Javascript,Arrays,Binary,我尝试使用NaiveFor循环方法计算数组中提供的数字的二进制数。 然后我找到了一个有效的解决方案,但我无法理解它是如何工作的。 我需要帮助来理解这一点 const二进制数组编号=arr=>{ return arr.reduce((a,b)=>(areduce函数用作累加器。(a,b)对实际上是(total,currentValue)。例如,如果要计算1、2和3的和,可以使用以下代码: var sum = [1, 2, 3].reduce( function(total, current

我尝试使用NaiveFor循环方法计算数组中提供的数字的二进制数。 然后我找到了一个有效的解决方案,但我无法理解它是如何工作的。 我需要帮助来理解这一点

const二进制数组编号=arr=>{

return arr.reduce((a,b)=>(areduce函数用作累加器。(a,b)对实际上是(total,currentValue)。例如,如果要计算1、2和3的和,可以使用以下代码:

var sum = [1, 2, 3].reduce(
   function(total, currentNumber){ return total + currentNumber; }
, 0);
对于每次迭代,currentNumber的total变量的值都会增加,并且在对数组的所有元素进行迭代之后,total将被分配给sum变量

匿名函数的第二个参数(在本例中为0)是sum的初始值(在迭代数组元素之前)

因此,上述代码与此代码相同:

var sum = 0;
for (var i = 1; i <=3; i++)
{
   sum = sum + i;
}
var总和=0;
对于(var i=1;i)解释您的代码:

它的哪一部分你不懂?你懂二进制运算符是怎么做的吗
,谢谢!!很好的解释。但是由于输出是十进制数。所以,我想确认一下,reduce函数在返回之前是否会使用parseInt('000001001',2)将其转换为十进制数。@aayus根本不懂。二进制操作(像shift和betwise or)自己处理数字。
var a=2;a=a谢谢!!@ibrahim这就是我要找的:)
n     = 00110100
m     = 10010101
----------------
n | m = 10110101
var arr = [1, 0, 1];
a = 00000000;
a << 1 = 00000000;
b = 00000001;
00000000 | b = 00000001;
a = 00000001;
a << 1 = 00000010;
b = 00000000;
00000010 | b = 00000010;
a = 00000010;
a << 1 = 00000100;
b = 00000001;
00000100 | 00000001 = 00000101;
return arr.reduce(function(a, b) { // a the accumulator, b the curent item from the array
    return (a << 1) | b; // return something to store as the new accumulator
}, 0; // 0 is the initial value of the accumulator