UNPKG

softkave-js-utils

Version:

JavaScript & Typescript utility functions, types, and classes

21 lines 865 B
import { getRandomInt } from '../number/index.js'; const kDefaultFilterFn = () => true; export function combineTokens(tokens, count) { const spentRecord = {}; const result = []; const getAvailableTokens = (index) => { return tokens.filter(token => { const spent = spentRecord[token.token] || 0; const filterFn = token.filterFn || kDefaultFilterFn; return filterFn(index, spent, result); }); }; for (let i = 0, available = getAvailableTokens(i); i < count && available.length > 0; i++, available = getAvailableTokens(i)) { const index = getRandomInt(0, available.length); const token = available[index]; spentRecord[token.token] = (spentRecord[token.token] || 0) + 1; result.push(token.token); } return result; } //# sourceMappingURL=combineTokens.js.map