Как работает 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
На выходе получится одно значение, которое можно с натяжкой назвать хэшем или контрольной суммой массива. Но для чего она может быть нужна это уже совсем другой вопрос.