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;
+          })(),
+        }
       }
     }
 

Reply via email to