summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Newson <rnewson@apache.org>2013-11-23 00:30:10 +0000
committerRobert Newson <rnewson@apache.org>2013-11-23 00:30:50 +0000
commit2804fc4e0a1f8b6192835069375ac33d9aa5307d (patch)
treef29eb26dfd80afefb4bb43bdc5c8569af09f0e38
parent98d08909a24194ef96c49179e326cc1baac71634 (diff)
downloadcouchdb-2804fc4e0a1f8b6192835069375ac33d9aa5307d.tar.gz
Improve _sum and _stats JS equivalents
-rw-r--r--share/doc/src/couchapp/ddocs.rst46
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;
+ })(),
+ }
}
}