20 lines
542 B
TypeScript
20 lines
542 B
TypeScript
/**
|
|
* Return random elements from an array
|
|
*/
|
|
export const getRandomItems = <T> (array: T[], amount: number): T[] => {
|
|
const shuffled = array.slice()
|
|
for (let i = shuffled.length - 1; i > 0; i--) {
|
|
const j = Math.floor(Math.random() * (i + 1));
|
|
[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]]
|
|
}
|
|
return shuffled.slice(0, amount)
|
|
}
|
|
|
|
|
|
/**
|
|
* Return a random element from an array
|
|
*/
|
|
export const getRandomItem = <T extends Array<unknown>> (array: T): T[0] => {
|
|
return getRandomItems(array, 1)[0]
|
|
}
|