JSFiddle - React, Tailwind, and code Playground
JavaScript
var getAcceleration = createAccelerationMap(0.1, 0.3, 0.6, 0.9, 2.0, 5.0);
alert(getAcceleration(0)); // 1
alert(getAcceleration(0.33)); // 2
alert(getAcceleration(0.64)); // 4
alert(getAcceleration(1.42)); // 8
alert(getAcceleration(3.14)); // 16
alert(getAcceleration(123456.789)); // 32
function createAccelerationMap(previous) {
var length = arguments.length, limits = [];
for (var i = 1; i < length;) {
var current = arguments[i++];
limits.push((previous + current) / 2);
previous = current;
}
return function (time) {
var length = limits.length, acceleration = 1;
for (var i = 0; i < length;) {
if (time < limits[i++]) return acceleration;
acceleration *= 2;
}
return acceleration;
};
}