softkave-js-utils
Version:
JavaScript & Typescript utility functions, types, and classes
21 lines • 865 B
JavaScript
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