首先,抱歉没有具体的标题。我不知道怎么称呼它。
好的,这是我的问题。
我将在这里使用Javascript的reduce函数。
我知道"减少"功能定义如下
function reduce(array, combine, start) {
var current = start;
for (var i = 0; i < array.length; i++)
current = combine(current, array[i]);
return current;
}
嗯,我不明白的是这个。
为什么
[1, 2, 3, 4].reduce(function(a, b) {
return a + b;
}, 0);
和
reduce([1, 2, 3, 4], function(a, b) {
return a + b;
}, 0);
返回&#34; 10&#34;?
的相同结果我知道这个功能是如何运作的。我只是不明白为什么
xx.functionABC(参数2,参数3)
与
functionABC(参数1,参数2,参数3)
感谢大家的回复!
感谢所有的评论和答案!
我没有先用其他方法检查(或者不应该尝试使用内置函数),我觉得很愚蠢。
答案 0 :(得分:2)
第一个代码段正在使用Array.prototype.reduce
,第二个代码段正在使用您的自定义reduce
功能。
它们碰巧实现的大致相同,因此给出相同的结果。
以下是它们如何不同的示例。 Array.prototype.reduce
将其他参数传递给combine回调,即当前数组索引,以及对数组本身的引用。你的函数没有传递这些参数。
function reduce(array, combine, start) {
var current = start;
for (var i = 0; i < array.length; i++)
current = combine(current, array[i]);
return current;
}
function foo(a, b, i) { return a + b * i; };
console.log([1, 2, 3, 4].reduce(foo, 0));
console.log(reduce([1, 2, 3, 4], foo, 0));
&#13;
(有关结果,请参阅浏览器的开发者控制台。)
答案 1 :(得分:0)
js中有一个方法Array.prototype.reduce()
。这意味着方法属于Array.prototype。但是没有简单的函数reduce()
。可能你会使用一些库来提供它。