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