Как работает a ^ b в reduce?

function stray(numbers) {
  return numbers.reduce((a, b) => a ^ b);
}

console.log(stray([1, 2, 1]));


Ответы (1 шт):

Автор решения: Talleyran

Банка ^ это операция xor побитовое исключающее или. Функция reduce выполняет callback над всеми элементами массива, каждый раз подставляя результат предыдущего выполнения. Т.е. для вашего примера, результат будет эквивалентен следующему:

(1 ^ 2) ^ 1 //2

Если бы массив был длиннее, например 1,2,3,4,5, то таким:

(((1 ^ 2) ^ 3) ^ 4) ^ 5 //1

На выходе получится одно значение, которое можно с натяжкой назвать хэшем или контрольной суммой массива. Но для чего она может быть нужна это уже совсем другой вопрос.

→ Ссылка