react / wstein / node_modules / jest-cli / node_modules / istanbul / node_modules / js-yaml / node_modules / argparse / node_modules / lodash / math / sum.js
80742 viewsvar arraySum = require('../internal/arraySum'),1baseCallback = require('../internal/baseCallback'),2baseSum = require('../internal/baseSum'),3isArray = require('../lang/isArray'),4isIterateeCall = require('../internal/isIterateeCall'),5toIterable = require('../internal/toIterable');67/**8* Gets the sum of the values in `collection`.9*10* @static11* @memberOf _12* @category Math13* @param {Array|Object|string} collection The collection to iterate over.14* @param {Function|Object|string} [iteratee] The function invoked per iteration.15* @param {*} [thisArg] The `this` binding of `iteratee`.16* @returns {number} Returns the sum.17* @example18*19* _.sum([4, 6]);20* // => 1021*22* _.sum({ 'a': 4, 'b': 6 });23* // => 1024*25* var objects = [26* { 'n': 4 },27* { 'n': 6 }28* ];29*30* _.sum(objects, function(object) {31* return object.n;32* });33* // => 1034*35* // using the `_.property` callback shorthand36* _.sum(objects, 'n');37* // => 1038*/39function sum(collection, iteratee, thisArg) {40if (thisArg && isIterateeCall(collection, iteratee, thisArg)) {41iteratee = null;42}43var noIteratee = iteratee == null;4445iteratee = noIteratee ? iteratee : baseCallback(iteratee, thisArg, 3);46return noIteratee47? arraySum(isArray(collection) ? collection : toIterable(collection))48: baseSum(collection, iteratee);49}5051module.exports = sum;525354