12345678910111213141516171819202122232425262728 |
- 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;
- };
|