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( |
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, |
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)) |
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] |
|||
[ |
[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}}== |