为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码如何理解??

这段代码如何理解??

慕码人8056858 2019-02-13 18:12:36
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


查看完整回答
反对 回复 2019-02-16
  • 1 回答
  • 0 关注
  • 413 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信