summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/lodash/math/sum.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/lodash/math/sum.js')
-rw-r--r--deps/npm/node_modules/lodash/math/sum.js50
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;