diff options
Diffstat (limited to 'deps/npm/node_modules/lodash/math/sum.js')
-rw-r--r-- | deps/npm/node_modules/lodash/math/sum.js | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/deps/npm/node_modules/lodash/math/sum.js b/deps/npm/node_modules/lodash/math/sum.js new file mode 100644 index 0000000000..114ff1b0a1 --- /dev/null +++ b/deps/npm/node_modules/lodash/math/sum.js @@ -0,0 +1,50 @@ +var arraySum = require('../internal/arraySum'), + baseCallback = require('../internal/baseCallback'), + baseSum = require('../internal/baseSum'), + isArray = require('../lang/isArray'), + isIterateeCall = require('../internal/isIterateeCall'), + toIterable = require('../internal/toIterable'); + +/** + * Gets the sum of the values in `collection`. + * + * @static + * @memberOf _ + * @category Math + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the sum. + * @example + * + * _.sum([4, 6]); + * // => 10 + * + * _.sum({ 'a': 4, 'b': 6 }); + * // => 10 + * + * var objects = [ + * { 'n': 4 }, + * { 'n': 6 } + * ]; + * + * _.sum(objects, function(object) { + * return object.n; + * }); + * // => 10 + * + * // using the `_.property` callback shorthand + * _.sum(objects, 'n'); + * // => 10 + */ +function sum(collection, iteratee, thisArg) { + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = undefined; + } + iteratee = baseCallback(iteratee, thisArg, 3); + return iteratee.length == 1 + ? arraySum(isArray(collection) ? collection : toIterable(collection), iteratee) + : baseSum(collection, iteratee); +} + +module.exports = sum; |