JS中的亦或运算符 ^ 的一种运用场景——返回数组元素个数为奇数个的元素

异或运算符的性质

0与1的运算:相同得 0,相异为 1
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 0 = 1
0 ^ 1 = 0
根本逻辑

12 ^ 5 = 9

1 1 0 0 = 12
0 1 0 1 = 5
1 0 0 1 = 9
满足交换律

A ^ B ^ c = A ^ c ^ B = B ^ c ^ A = C ^ B ^ A

运用

需求:传入一个数组,数组有且只有一个元素出现过奇数次,返回该元素

  • 关键字:只有一个元素出现奇数次
function demo(arr) {
  return arr.reduce((prev, next) => prev ^ next);
}
console.log(demo([10, 3, 2, 3, 5, 2, 5]));  // 10
运算过程 10 ^ 3 ^ 2 ^ 3 ^ 5 ^ 2 ^ 5
交换律得 10 ^ 3 ^ 3 ^ 2 ^ 2 ^ 5 ^ 5 相异为 1, 相同为 0;3 与 3 的二进制都相同,故 3 ^ 3 = 0;2,5 同理。最后只剩下 10 ^ 0 = 10

JS中的亦或运算符 ^ 的一种运用场景——返回数组元素个数为奇数个的元素

上一篇:通讯录管理系统c++


下一篇:java目录下的描述