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