1/**
2 * The base implementation of `_.sum` and `_.sumBy` without support for
3 * iteratee shorthands.
4 *
5 * @private
6 * @param {Array} array The array to iterate over.
7 * @param {Function} iteratee The function invoked per iteration.
8 * @returns {number} Returns the sum.
9 */
10function baseSum(array, iteratee) {
11  var result,
12      index = -1,
13      length = array.length;
14
15  while (++index < length) {
16    var current = iteratee(array[index]);
17    if (current !== undefined) {
18      result = result === undefined ? current : (result + current);
19    }
20  }
21  return result;
22}
23
24module.exports = baseSum;
25