uuid 生成器

徐徐
前端
发表于 2026-04-20 16:00:00
🌺 摘要
实现可配置长度与基数的 `uuid` 生成函数,同时支持 36 位标准格式(含连字符与版本位)生成逻辑。

/**
 * 生成 uuid
 * @param len uuid 长度 默认 16
 * @param radix 字符集长度 默认 62
 * @returns uuid 字符串
 */
export function uuid(len: number = 16, radix?: number): string {
  const chars: string[] =
    "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split("");
  const uuid: string[] = [];
  let i: number;
  const radixS = radix || chars.length;

  if (len) {
    for (i = 0; i < len; i++) {
      uuid[i] = chars[0 | (Math.random() * radixS)];
    }
  } else {
    let r: number;
    uuid[8] = uuid[13] = uuid[18] = uuid[23] = "-";
    uuid[14] = "4";
    for (i = 0; i < 36; i++) {
      if (!uuid[i]) {
        r = 0 | (Math.random() * 16);
        uuid[i] = chars[i === 19 ? (r & 0x3) | 0x8 : r];
      }
    }
  }

  return uuid.join("");
}
文章发表于 2026-04-20 16:00:00
作者: 徐徐
文章标题: uuid 生成器
版权声明: 内容遵守许可协议,转载请注明出处。
扫码阅读原文
没有下一篇文章