moving-averages-js
Version:
The FinTech utility collections of simple, cumulative, and exponential moving averages.
41 lines (40 loc) • 1.01 kB
JavaScript
;
// simple moving average
Object.defineProperty(exports, "__esModule", { value: true });
var common_1 = require("./common");
exports.default = (function (data, size) {
var length = data.length;
if (!size) {
return data.reduce(function (a, b) { return a + b; }) / length;
}
if (size <= 1) {
return data.slice();
}
if (size > length) {
return Array(length);
}
var prepare = size - 1;
var ret = [];
var sum = 0;
var i = 0;
var counter = 0;
var datum;
for (; i < length && counter < prepare; i++) {
datum = data[i];
if ((0, common_1.isNumber)(datum)) {
sum += datum;
counter++;
}
}
for (; i < length; i++) {
datum = data[i];
if ((0, common_1.isNumber)(datum)) {
sum += datum;
}
if ((0, common_1.isNumber)(data[i - size])) {
sum -= data[i - size];
}
ret[i] = sum / size;
}
return ret;
});