找出那只单身狗JavaScript

196 阅读1分钟
/**
 * 找单身狗
 * nums数组中包好1个或多个正整数
 * 其他的数字都出现2次
 * 只有一个数字出现了1次
 * 找出出现了1次的数字
 */

/* 异或运算
    规则:
        a^b^c === c^a^b
        a^a === 0
        0^a === a
    例子:
    a^b^c^a^c
    a^a^c^c^b
    0^b === b
*/

代码:
let arr = [1, 3, 1, 2, 2, 7, 3, 6, 7];
function uniqueNumber(nums) {
    /* // 解法1:
    var result = 0;
    for (var i = 0; i < nums.length; i++) {
        result = result ^ nums[i];
    }
    return result; */

    // 解法2:
    return nums.reduce((a, b) => a ^ b, 0);
}
console.log(uniqueNumber(arr));