29 lines
		
	
	
		
			821 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			29 lines
		
	
	
		
			821 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
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;
 | 
						|
};
 |