Share Brilliantly
transforming data
function runningMovingAverage(size){
let total = 0;
let items = [];
return function(item){
total += item;
items.push(item);
if(items.length>size){
let first = items.shift();
total -=first;
}
if(items.length === size) return total/size;
return null;
}
}
The following code uses the above defined function in order to utilize the array map function to transform the data.
let data = [{price:100},{price:101},{price:100},{price:102},{price:102},{price:103},{price:105},{price:102}];
let ma = runningMovingAverage(3);
let results = data.map(p=>{
return {
price:p.price,
movingAverage:ma(p.price)
}
});
Try it!