56 lines
1.2 KiB
JavaScript
56 lines
1.2 KiB
JavaScript
// get a unique id
|
|
export const uniqId = () => Date.now().toString(36) + Math.random().toString(36).substring(2)
|
|
|
|
// get a random int between min and max (inclusive)
|
|
export const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min
|
|
|
|
// get one random item from the given array
|
|
export const choice = (array) => array[randomInt(0, array.length - 1)]
|
|
|
|
export const throttle = (fn, delay) => {
|
|
let canCall = true
|
|
return (...args) => {
|
|
if (canCall) {
|
|
fn.apply(null, args)
|
|
canCall = false
|
|
setTimeout(() => {
|
|
canCall = true
|
|
}, delay)
|
|
}
|
|
}
|
|
}
|
|
|
|
// return a shuffled (shallow) copy of the given array
|
|
export const shuffle = (array) => {
|
|
let arr = array.slice()
|
|
for (let i = 0; i <= arr.length - 2; i++)
|
|
{
|
|
const j = randomInt(i, arr.length -1);
|
|
const tmp = arr[i];
|
|
arr[i] = arr[j];
|
|
arr[j] = tmp;
|
|
}
|
|
return arr
|
|
}
|
|
|
|
export const timestamp = () => {
|
|
const d = new Date();
|
|
return Date.UTC(
|
|
d.getUTCFullYear(),
|
|
d.getUTCMonth(),
|
|
d.getUTCDate(),
|
|
d.getUTCHours(),
|
|
d.getUTCMinutes(),
|
|
d.getUTCSeconds(),
|
|
d.getUTCMilliseconds(),
|
|
)
|
|
}
|
|
|
|
export default {
|
|
uniqId,
|
|
randomInt,
|
|
choice,
|
|
throttle,
|
|
shuffle,
|
|
timestamp,
|
|
}
|