What does the "^=" operator do in this find non-paired number algorithm?

Viewed 992

Saw an interesting piece of code to find a lonely number in a list of duplicate numbers (where every number in the list occurs twice except for one).

function findNonPaired(listOfNumbers) {
  let nonPairedNumber = 0

  listOfNumbers.forEach((n) => {
      nonPairedNumber ^= n
  })

  return nonPairedNumber
}

const x = [1,5,4,3,9,2,3,1,4,5,9]
console.log(findNonPaired(x))

This solution looks very elegant, but I'm curious at to what the ^= operator is actually doing here?

2 Answers
Related