UNPKG

halflife-array

Version:

Creates an array of the halflife of something as the value decreases over time.

25 lines (22 loc) 935 B
function halflifeArray(readingAmount = 100, halflifeMinutes = 300, intervalMinutes = 10, amountLimit = 0.5) { const readingArray = []; let currentAmount = readingAmount; let i = 0; while(currentAmount > amountLimit) { if (i !== 0) { currentAmount = halflifeReduction(i, readingAmount, readingArray, halflifeMinutes, intervalMinutes); } readingArray[i] = currentAmount; i++; } return readingArray; } function halflifeReduction(i, readingAmount, readingArray, halflifeMinutes, intervalMinutes) { const increments = Math.round(halflifeMinutes / intervalMinutes); const whichIteration = Math.ceil(i / increments) - 1; const startingAmount = readingArray[(increments * whichIteration)]; const halflifeReduction = startingAmount / 2; const reduceNow = (halflifeReduction * (i - (increments * whichIteration)) / increments); return startingAmount - reduceNow; } module.exports = halflifeArray;