You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
816 B
JavaScript
28 lines
816 B
JavaScript
var aFunction = require('./_a-function')
|
|
, toObject = require('./_to-object')
|
|
, IObject = require('./_iobject')
|
|
, toLength = require('./_to-length');
|
|
|
|
module.exports = function(that, callbackfn, aLen, memo, isRight){
|
|
aFunction(callbackfn);
|
|
var O = toObject(that)
|
|
, self = IObject(O)
|
|
, length = toLength(O.length)
|
|
, index = isRight ? length - 1 : 0
|
|
, i = isRight ? -1 : 1;
|
|
if(aLen < 2)for(;;){
|
|
if(index in self){
|
|
memo = self[index];
|
|
index += i;
|
|
break;
|
|
}
|
|
index += i;
|
|
if(isRight ? index < 0 : length <= index){
|
|
throw TypeError('Reduce of empty array with no initial value');
|
|
}
|
|
}
|
|
for(;isRight ? index >= 0 : length > index; index += i)if(index in self){
|
|
memo = callbackfn(memo, self[index], index, O);
|
|
}
|
|
return memo;
|
|
}; |