我正在练习在下划线库中重写reduce方法。
我想这样做,如果没有传递任何起始值,则第一个元素用作累加器,并且永远不会传递给迭代器。
我已经写到下面了。不知道如何使第一个元素不传递给迭代器。感谢任何评论。
_.reduce = function(collection, iterator, accumulator) {
if(arguments.length == 2) accumulator = collection[0];
_.each(collection, function(el){
accumulator = iterator(accumulator, el);
})
return accumulator;
};
最佳答案
这是_.first
和_.rest
派上用场的地方:
_.reduce = function (collection, iterator, accumulator) {
if (arguments.length == 2) {
accumulator = _.first(collection);
collection = _.rest(collection);
}
_.each(collection, function (el) {
accumulator = iterator(accumulator, el);
})
return accumulator;
};
关于javascript - 使用_.each编写下划线_.reduce方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31983326/