diff options
author | Eliot Horowitz <eliot@10gen.com> | 2009-11-09 22:25:37 -0500 |
---|---|---|
committer | Eliot Horowitz <eliot@10gen.com> | 2009-11-09 22:25:37 -0500 |
commit | a2b62096929a59808b0300142bb1beaa246120d8 (patch) | |
tree | c3aecd8a8ebd54af325658a17e5c19bf1e77d647 | |
parent | c04ee7b281c96551b96e97d1f42e6c72adee00f6 (diff) | |
download | mongo-a2b62096929a59808b0300142bb1beaa246120d8.tar.gz |
Array.avg Array.stdDev
-rw-r--r-- | jstests/array3.js | 8 | ||||
-rw-r--r-- | shell/utils.js | 17 |
2 files changed, 25 insertions, 0 deletions
diff --git a/jstests/array3.js b/jstests/array3.js new file mode 100644 index 00000000000..3d053f99417 --- /dev/null +++ b/jstests/array3.js @@ -0,0 +1,8 @@ + +assert.eq( 5 , Array.sum( [ 1 , 4 ] ), "A" ) +assert.eq( 2.5 , Array.avg( [ 1 , 4 ] ), "B" ) + +arr = [ 2 , 4 , 4 , 4 , 5 , 5 , 7 , 9 ] +assert.eq( 5 , Array.avg( arr ) , "C" ) +assert.eq( 2 , Array.stdDev( arr ) , "D" ) + diff --git a/shell/utils.js b/shell/utils.js index e7a45fe4b2b..37f512b7ea7 100644 --- a/shell/utils.js +++ b/shell/utils.js @@ -255,6 +255,23 @@ Array.sum = function( arr ){ return s; } +Array.avg = function( arr ){ + if ( arr.length == 0 ) + return null; + return Array.sum( arr ) / arr.length; +} + +Array.stdDev = function( arr ){ + var avg = Array.avg( arr ); + var sum = 0; + + for ( var i=0; i<arr.length; i++ ){ + sum += Math.pow( arr[i] - avg , 2 ); + } + + return Math.sqrt( sum / arr.length ); +} + if ( ! ObjectId.prototype ) ObjectId.prototype = {} |