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,网上查资料解释的不清楚,求大神通俗易懂的解释
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,网上查资料解释的不清楚,求大神通俗易懂的解释
这样会不会好理解呢?
^(异或)也就是不同为真 0和1 1和0 。1和1 0 和 0 都是假。
2=10B 3=11B 1=01B
reduce可以变相的理解为遍历吧,有参数的话第一个是参数,没有的话,少一次循环。返回值当做参数。
学习的话可以看MDN或者阮一峰的一些文章,都是免费的
Array.prototype.reduce = function(fn, prev){
prev = prev || 0;
var i = 0, l = this.length;
for(i; i < l; i++){
prev = fn(prev, this[i], i, this);
}
return prev;
}
var rs = [1,2,3].reduce(function(a, b){
return a + b;
});
console.log(rs);
简单模拟一下reduce的功能,这样可能你会好理解一点,当然,最好的是去文档中寻找它的详细说明
^, 这个符号是异或运算的意思。代码的意思就是把数组中的十进制数进行循环异或运算。参考下这两个链接
http://www.runoob.com/jsref/j...
http://www.ijavascript.cn/sho...
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
reduce这个函数 可以这样理解 将计算得到的结果作为下一次运算的参数继续参与运算;
举个例子