Javascript 在数组中查找一对数字可以用位运算符求解吗

Javascript 在数组中查找一对数字可以用位运算符求解吗,javascript,bit-manipulation,bitwise-operators,Javascript,Bit Manipulation,Bitwise Operators,用位运算符可以解决这个问题吗? 给定一个整数数组,找到两个相同的数字并返回其中一个,例如在数组[7,3,5,6,7]中,答案是7。我试图理解什么时候可以用bitwise解决问题。到目前为止,我知道如果我乘或除2,我想用左移位乘2,右移位除2,如果我想抵消匹配的数字,用异或。我想我可以退出第一对匹配的循环,但我现在不认为我可以。我试过这个 function findIt(arr) { var dog = 0; for (var i = 0; i < arr.length; i++)

用位运算符可以解决这个问题吗? 给定一个整数数组,找到两个相同的数字并返回其中一个,例如在数组[7,3,5,6,7]中,答案是7。我试图理解什么时候可以用bitwise解决问题。到目前为止,我知道如果我乘或除2,我想用左移位乘2,右移位除2,如果我想抵消匹配的数字,用异或。我想我可以退出第一对匹配的循环,但我现在不认为我可以。我试过这个

function findIt(arr) {
  var dog = 0;
  for (var i = 0; i < arr.length; i++) {
    if ((dog ^= arr[i]) == 0) {
      dog =arr[i];
      break;
    }
  }
  return dog;
}
这不是家庭作业,我只是好奇地学习javascript中的逐位操作。下面是香草解决方案。 函数findItarr{ var obj={}; 对于变量i=0;ilogfindIt[7,3,5,6,7正如@Barmar在评论中已经建议的那样,您可以使用嵌套for循环来解决问题

这样做应该可以:

function findIt(arr) {
  var cmpValue, flag = 0;
  for (var i = 0; i < arr.length; i++) {
    cmpValue = arr[i];
    for(var j = i + 1 ; j < arr.length ; j++){
        if(cmpValue^arr[i] == 0){
            flag=1;
            break;
        }
    }
    if(flag == 1){
        break;
    }
  }
  if(flag == 1){
    return cmpValue;
  }
  else{
    return 'no pairs found'
  }

}

console.log(findIt([7,3,5,6,7))
> 7
console.log(findIt([3,3,5,6,7))
> 3

你的函数只会在数字相邻的情况下找到相等的数字。这就是你想要的吗?@barmar no,我想让它在整个数组中搜索数字对,而不是在数字相邻的情况下搜索。在整个数组中找到唯一的数字对。我将更改示例输入。然后你需要使用嵌套循环,以便比较ev每一个元素与其他元素一起。