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.
		
		
		
		
		
			
		
			
				
					29 lines
				
				821 B
			
		
		
			
		
	
	
					29 lines
				
				821 B
			| 
											3 years ago
										 | 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; | ||
|  | }; |