UNPKG

randomize-with-percentage

Version:

randomize-with-percentage is a typescript library for randomized get items with percentages.

32 lines 1.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function randomize(items) { const allPercentageSum = items.reduce((acc, item) => acc + item.percent, 0); if (allPercentageSum !== 100) { throw new Error("All percentages sum must be 100"); } const biggestDecimalLength = items.reduce((acc, item) => { const decimal = item.percent.toString().split(".")[1]; if (!decimal) return acc; const decimalLength = Number(decimal.split("").length); if (acc < decimalLength) return decimalLength; return acc; }, 0); const decimalGrowth = Math.pow(10, biggestDecimalLength); const random = Math.floor(Math.random() * 100 * decimalGrowth); let totalPercentPassed = 0; const selectedListItem = items.find((item) => { totalPercentPassed += item.percent * decimalGrowth; if (random < totalPercentPassed) return true; return false; }); return { value: selectedListItem.value, selectedListItem, }; } exports.default = randomize; //# sourceMappingURL=index.js.map