diff --git a/lodash.js b/lodash.js index c5a286afe..c56e9eba9 100644 --- a/lodash.js +++ b/lodash.js @@ -841,7 +841,7 @@ result = result === undefined ? current : (result + current); } } - return result; + return length ? result : 0; } /** @@ -13917,7 +13917,7 @@ function sum(array) { return (array && array.length) ? baseSum(array, identity) - : undefined; + : 0; } /** @@ -13945,7 +13945,7 @@ function sumBy(array, iteratee) { return (array && array.length) ? baseSum(array, getIteratee(iteratee)) - : undefined; + : 0; } /*------------------------------------------------------------------------*/ diff --git a/test/test.js b/test/test.js index 228e7bba1..d70a5e13a 100644 --- a/test/test.js +++ b/test/test.js @@ -12878,6 +12878,15 @@ var array = [4, 2, 8, 6]; assert.strictEqual(_.mean(array), 5); }); + + QUnit.test('should return `NaN` when passing empty `array` values', function(assert) { + assert.expect(1); + + var expected = lodashStable.map(empties, alwaysNaN), + actual = lodashStable.map(empties, _.mean); + + assert.deepEqual(actual, expected); + }); }()); /*--------------------------------------------------------------------------*/ @@ -18713,10 +18722,10 @@ assert.strictEqual(_.sum(array), 12); }); - QUnit.test('should return `undefined` when passing empty `array` values', function(assert) { + QUnit.test('should return `0` when passing empty `array` values', function(assert) { assert.expect(1); - var expected = lodashStable.map(empties, alwaysUndefined), + var expected = lodashStable.map(empties, alwaysZero), actual = lodashStable.map(empties, _.sum); assert.deepEqual(actual, expected);