作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
根据文档 underscore-reduce我应该传递三个参数。
例如:
var m = _.reduce([1,2,3], function (memo, num) {return (num * 2) +memo }, 0);
m; // 12 as expected
如果我尝试只传递前两个参数,我会得到不同的值。为什么?
var m = _.reduce([1,2,3], function (memo, num) {return (num * 2) +memo });
m; // 11 ..why?
最佳答案
只有两个参数传入 reduce
,它将使用第一个和第二个数组项作为第一个函数调用的参数。
function addDouble(memo, num) {return (num * 2) +memo }
[1,2,3].reduce(addDouble, 0)
// is equivalent to
addDouble(addDouble(addDouble(0, 1), 2), 3)
[1,2,3].reduce(addDouble)
// is equivalent to
addDouble(addDouble(1, 2), 3)
通常您会传递起始值,但是许多操作在没有 identity element 的情况下开始时具有相同的结果。 .例如:
function add(a, b) { return a+b; }
function double(a) { return 2*a; }
[1,2,3].map(double).reduce(add) == [1,2,3].map(double).reduce(add, 0)
另请参阅 native reduce()
的文档.
关于javascript - 下划线减少,关于备忘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11760173/
我是一名优秀的程序员,十分优秀!