Averages/Simple moving average: Difference between revisions

Content added Content deleted
(Edited fiddle to produce correct results.)
Line 1,897: Line 1,897:


===Using reduce/filter===
===Using reduce/filter===
{{incorrect|Javascript|routine is called with a list of multiple numbers rather than being called with individual numbers in succession.}}
[http://jsfiddle.net/79xe381e/ JS Fiddle]
[http://jsfiddle.net/79xe381e/ JS Fiddle]


<lang javascript>// single-sided
<lang javascript>// single-sided
Array.prototype.simpleSMA=function(N) {
Array.prototype.simpleSMA=function(N) {
return this.map(function(x,i,v) {
return this.map(
function(el,index, _arr) {
if(i<N-1) return NaN;
return _arr.filter(
return v.filter(function(x2,i2) { return i2<=i && i2>i-N; }).reduce(function(a,b){ return a+b; })/N;
function(x2,i2) {
}); };
return i2 <= index && i2 > index - N;
})
.reduce(
function(current, last, index, arr){
return (current + last);
})/index || 1;
});
};


g=[1,2,3,4,5,8,5,4];
g=[0,1,2,3,4,5,6,7,8,9,10];
console.log(g.simpleSMA(3))
console.log(g.simpleSMA(3));
console.log(g.simpleSMA(5))</lang>
console.log(g.simpleSMA(5));
console.log(g.simpleSMA(g.length));</lang>
{{out}}
{{out}}
<pre>
<pre>[NaN, NaN, 2, 3, 4, 5.666666666666667, 6, 5.666666666666667]
[NaN, NaN, NaN, NaN, 3, 4.4, 5, 5.2]</pre>
[1, 1, 1.5, 2, 2.25, 2.4, 2.5, 2.5714285714285716, 2.625, 2.6666666666666665, 2.7]
[1, 1, 1.5, 2, 2.5, 3, 3.3333333333333335, 3.5714285714285716, 3.75, 3.888888888888889, 4]
[1, 1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5, 5.5]
</pre>


=={{header|Julia}}==
=={{header|Julia}}==