import {v4 as uuidv4} from 'uuid' /** * 生成UUID * @returns {string} */ export function createUUID() { return uuidv4().replace(/-/g, '') } /** * 通过字符串生成唯一编码,可能有hash碰撞问题 * @param str * @returns {number|string} */ export function createHashCodeByStr(str) { let hash = 0 if (str.length === 0) return hash for (let i = 0; i < str.length; i++) { const char = str.charCodeAt(i) hash = ((hash << 5) - hash) + char hash = hash & hash // 转换为32位整数 } // 将整数转换为16进制字符串,以缩短code长度 return Math.abs(hash).toString(16) } /** * 生成一个16位的纯数字的唯一ID * 生成策略 head + 当前时间戳 + 随机数 * @param head 前缀 */ export function createUniqueCodeByHead(head = '') { const min = 100; // 最小值 const max = 999; // 最大值 return head.toString() + Date.now().toString() + Math.floor(Math.random() * (max - min + 1)) + min; }