code: function arrayReduce(array, iteratee, accumulator, initAccum) {
      var index = -1,
          length = array ? array.length : 0;
  
      if (initAccum && length) {
        accumulator = array[++index];
      }
      while (++index < length) {
        accumulator = iteratee(accumulator, array[index], index, array);
      }
      return accumulator;
    }
docs: 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.