我需要在javascript中重新创建_.reduce(),以便
到目前为止,我有一个满足第1和第4要求的功能。然而,我无法获得第二和第三。
_.reduce = function(collection, iterator, accumulator) {
if(typeof accumulator === undefined){
accumulator = collection[0]
}
_.each(collection, function(anyItem){
accumulator = iterator(accumulator, anyItem);
})
return accumulator;
};
我的下一步是什么?如何完成此功能?
答案 0 :(得分:0)
试试这个:
_.reduce = function(collection, iterator, accumulator) {
if (arguments[0] && arguments[1] && arguments.length === 2) {
accumulator = collection[0];
collection = collection.slice(1);
}
_.each(collection, function(item) {
accumulator = iterator(accumulator, item);
});
return accumulator;
};
如果您不理解其中的一部分,请问,我会尝试解释。
答案 1 :(得分:0)
我会像这样写
_.reduce = function(collection, iterator, accumulator) {
if(arguments.length < 3) return _.reduce(collection.slice(1), iterator, collection[0]);
_.each(collection, item => accumulator = iterator(accumulator, item));
return accumulator;
};