|  | /** | 
						
						
							|  |  * A specialized version of `_.reduce` for arrays without support for | 
						
						
							|  |  * iteratee shorthands. | 
						
						
							|  |  * | 
						
						
							|  |  * @private | 
						
						
							|  |  * @param {Array} [array] The array to iterate over. | 
						
						
							|  |  * @param {Function} iteratee The function invoked per iteration. | 
						
						
							|  |  * @param {*} [accumulator] The initial value. | 
						
						
							|  |  * @param {boolean} [initAccum] Specify using the first element of `array` as | 
						
						
							|  |  *  the initial value. | 
						
						
							|  |  * @returns {*} Returns the accumulated value. | 
						
						
							|  |  */ | 
						
						
							|  | function arrayReduce(array, iteratee, accumulator, initAccum) { | 
						
						
							|  |   var index = -1, | 
						
						
							|  |       length = array == null ? 0 : array.length; | 
						
						
							|  | 
 | 
						
						
							|  |   if (initAccum && length) { | 
						
						
							|  |     accumulator = array[++index]; | 
						
						
							|  |   } | 
						
						
							|  |   while (++index < length) { | 
						
						
							|  |     accumulator = iteratee(accumulator, array[index], index, array); | 
						
						
							|  |   } | 
						
						
							|  |   return accumulator; | 
						
						
							|  | } | 
						
						
							|  | 
 | 
						
						
							|  | module.exports = arrayReduce;
 |