Updated Branches: refs/heads/master 98d08909a -> 2804fc4e0
Improve _sum and _stats JS equivalents Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/2804fc4e Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/2804fc4e Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/2804fc4e Branch: refs/heads/master Commit: 2804fc4e0a1f8b6192835069375ac33d9aa5307d Parents: 98d0890 Author: Robert Newson <[email protected]> Authored: Sat Nov 23 00:30:10 2013 +0000 Committer: Robert Newson <[email protected]> Committed: Sat Nov 23 00:30:50 2013 +0000 ---------------------------------------------------------------------- share/doc/src/couchapp/ddocs.rst | 46 +++++++++++++++++++++-------------- 1 file changed, 28 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb/blob/2804fc4e/share/doc/src/couchapp/ddocs.rst ---------------------------------------------------------------------- diff --git a/share/doc/src/couchapp/ddocs.rst b/share/doc/src/couchapp/ddocs.rst index 2625d14..754b9b7 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; + })(), + } } }
