diff options
author | Robert Newson <rnewson@apache.org> | 2013-11-23 00:30:10 +0000 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2013-11-23 00:30:50 +0000 |
commit | 2804fc4e0a1f8b6192835069375ac33d9aa5307d (patch) | |
tree | f29eb26dfd80afefb4bb43bdc5c8569af09f0e38 | |
parent | 98d08909a24194ef96c49179e326cc1baac71634 (diff) | |
download | couchdb-2804fc4e0a1f8b6192835069375ac33d9aa5307d.tar.gz |
Improve _sum and _stats JS equivalents
-rw-r--r-- | share/doc/src/couchapp/ddocs.rst | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/share/doc/src/couchapp/ddocs.rst b/share/doc/src/couchapp/ddocs.rst index 2625d1473..754b9b7c5 100644 --- a/share/doc/src/couchapp/ddocs.rst +++ b/share/doc/src/couchapp/ddocs.rst @@ -126,12 +126,12 @@ JavaScript below: .. code-block:: javascript // could be replaced by _sum - function(keys, values){ - sum(values); + function(keys, values) { + return sum(values); } // could be replaced by _count - function(keys, values, rereduce){ + function(keys, values, rereduce) { if (rereduce) { return sum(values); } else { @@ -140,21 +140,31 @@ JavaScript below: } // could be replaced by _stats - function(keys, values, rereduce){ - return { - 'sum': sum(values), - 'min': Math.min.apply(null, values), - 'max': Math.max.apply(null, values), - 'count': values.length, - 'sumsqr': (function(){ - var sumsqr = 0; - - values.forEach(function (value) { - sumsqr += value * value; - }); - - return sumsqr; - })(), + function(keys, values, rereduce) { + if (rereduce) { + return { + 'sum': values.reduce(function(a, b) { return a + b.sum }, 0), + 'min': values.reduce(function(a, b) { return Math.min(a, b.min) }, Infinity), + 'max': values.reduce(function(a, b) { return Math.max(a, b.max) }, -Infinity), + 'count': values.reduce(function(a, b) { return a + b.count }, 0), + 'sumsqr': values.reduce(function(a, b) { return a + b.sumsqr }, 0) + } + } else { + return { + 'sum': sum(values), + 'min': Math.min.apply(null, values), + 'max': Math.max.apply(null, values), + 'count': values.length, + 'sumsqr': (function() { + var sumsqr = 0; + + values.forEach(function (value) { + sumsqr += value * value; + }); + + return sumsqr; + })(), + } } } |