UNPKG

moving-averages-js

Version:

The FinTech utility collections of simple, cumulative, and exponential moving averages.

41 lines (40 loc) 1.01 kB
"use strict"; // 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; });