@dvcol/common-utils
Version:
Typescript library for common utility functions and constants
38 lines (36 loc) • 1.37 kB
JavaScript
// lib/common/utils/math.utils.ts
var arrayMax = (array, prop, filter) => array?.length ? array?.reduce((prev, current) => {
if (filter && !filter(current)) return prev;
if (prev[prop] === void 0 || current[prop] !== void 0 && current[prop] > prev[prop]) {
return current;
}
return prev;
}) : void 0;
var findClosestMatch = (value, array) => {
if (!array?.length) return "original";
let closestMatch = array[0];
let minDifference = Math.abs(value - parseInt(array[0].substring(1), 10));
for (let i = 1; i < array.length; i += 1) {
const currentValue = parseInt(array[i].substring(1), 10);
const difference = Math.abs(value - currentValue);
if (difference < minDifference) {
minDifference = difference;
closestMatch = array[i];
}
}
if (!closestMatch) return "original";
if (Math.abs(parseInt(closestMatch.substring(1), 10)) * 2 < Math.abs(value)) return "original";
return closestMatch;
};
var clamp = (val, min, max) => Math.min(Math.max(val, min), max);
var randomInt = (min = 0, max = 100) => Math.floor(Math.random() * (max - min + 1)) + min;
var round = (value, precision = 0) => Math.round(value * 10 ** precision) / 10 ** precision;
var percent = (value, total = 100, precision = 2) => round(value / total * 100, precision);
export {
arrayMax,
findClosestMatch,
clamp,
randomInt,
round,
percent
};