var singleNumber = function(nums) { return nums.reduce(function(prev, cur) { return prev ^ cur; });};singleNumber([2,3,5,6,2,3,5]) //结果是6我太菜了理解不了reduec和prev ^ cur,网上查资料解释的不清楚,求大神通俗易懂的解释
1 回答
当年话下
TA贡献1890条经验 获得超9个赞
reduce这个函数 可以这样理解 将计算得到的结果作为下一次运算的参数继续参与运算;
举个例子
[1,2,3,4,5].reduce(function(prev,cur){
return prev + cur
})
//结果就是
1+2 = 3
3+3 = 6
6+4 = 10
10+5 = 15
^ 运算符是位运算符,异或操作,简单就是将左右两个参数转换成二进制然后比对
比如 3 ^ 5 就是011 ^ 101 ,异或运算会比对参数的每一位上是否相等 如果相等则取0不等则取1,则011 ^ 101=110
然后再回头看题目
拆分就相当于
2^3 = 010^011 = 001 =1
1^5 = 001^101 = 100 =4
4^6 = 100^110 = 010 =6
2^2 = 010^010 = 000 = 0
0^3 = 000^011 = 011 = 3
3^5 = 011^101 = 110 = 6
添加回答
举报
0/150
提交
取消