You can not 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
821 B
28 lines
821 B
var aFunction = require('./_a-function'); |
|
var toObject = require('./_to-object'); |
|
var IObject = require('./_iobject'); |
|
var toLength = require('./_to-length'); |
|
|
|
module.exports = function (that, callbackfn, aLen, memo, isRight) { |
|
aFunction(callbackfn); |
|
var O = toObject(that); |
|
var self = IObject(O); |
|
var length = toLength(O.length); |
|
var index = isRight ? length - 1 : 0; |
|
var 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; |
|
};
|
|
|