表达式'p [i& 1] + = v,p`是什么意思?

时间:2017-05-06 23:46:16

标签: javascript ecmascript-6

我正在使用CodeFights练习我的javascript,在完成练习后,我看到了这个功能:

// Subject : 
// Several people are standing in a row and need to be divided into two teams. 
// The first person goes into team 1, the second goes into team 2, 
// the third goes into team 1 again, the fourth into team 2, and so on.
// You are given an array of positive integers - the weights of the people. 
// Return an array of two integers, where the first element is the total weight of 
// team 1, and the second element is the total weight of team 2 
// after the division is complete.

// Example :
// For a = [50, 60, 60, 45, 70], the output should be
// alternatingSums(a) = [180, 105].

// answer
alternatingSums = a => a.reduce((p,v,i) => (p[i&1]+=v,p), [0,0])

我不明白p[i&1]+=v,p的含义。

2 个答案:

答案 0 :(得分:4)

FloatingActionButton符号是一个按位二元运算符。

要了解会发生什么,您必须将每个项目转换为二进制。

&

实际上,每个偶数都将转换为0,每个奇数将转换为1。

如果我试图实现这一结果,我个人会使用模数运算符( | i (decimal) | i (binary) | i & 1 | |-------------|------------|-------| | 0 | 0 | 0 | | 1 | 1 | 1 | | 2 | 10 | 0 | | 3 | 11 | 1 | | 4 | 100 | 0 | | 5 | 101 | 1 |

%

但那只是我。

<小时/> 另一部分是有两个用逗号分隔的语句:

 p[i%2] += v;

那就是说“执行此操作,然后返回 (p[i&1]+=v,p) 。这是简写:

p

答案 1 :(得分:2)

它查找索引为p的{​​{1}}数组元素 - 它是一个按位AND操作。然后,将其值增加i&1变量的值。最后,返回v变量的值。