当前位置:首页 > JavaScript

js实现guid

2026-04-06 23:10:00JavaScript

生成 GUID 的方法

在 JavaScript 中,可以通过多种方式生成 GUID(全局唯一标识符)。以下是几种常见的实现方法:

使用 crypto API(推荐)

现代浏览器支持 crypto API,可以生成符合 RFC 4122 标准的 UUID:

function generateUUID() {
    return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
        (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
    );
}
console.log(generateUUID()); // 示例输出: "7982fcfe-5721-4632-bede-6000885be57d"

使用 uuid

第三方库 uuid 提供了简单可靠的 UUID 生成功能:

import { v4 as uuidv4 } from 'uuid';
const id = uuidv4();
console.log(id); // 示例输出: "1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed"

自定义随机字符串实现

如果不需要严格符合 UUID 标准,可以使用随机字符串模拟 GUID:

function generateSimpleGUID() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
        const r = Math.random() * 16 | 0;
        const v = c === 'x' ? r : (r & 0x3 | 0x8);
        return v.toString(16);
    });
}
console.log(generateSimpleGUID()); // 示例输出: "a3e8f1d4-c5f6-4b9a-8e7d-0f2c3b1a6e5d"

性能优化版本

对于需要高频生成 UUID 的场景,可以使用预分配的 Uint8Array:

js实现guid

const uuidBuffer = new Uint8Array(16);
function generateFastUUID() {
    crypto.getRandomValues(uuidBuffer);
    uuidBuffer[6] = (uuidBuffer[6] & 0x0f) | 0x40;
    uuidBuffer[8] = (uuidBuffer[8] & 0x3f) | 0x80;
    return Array.from(uuidBuffer)
        .map(b => b.toString(16).padStart(2, '0'))
        .join('')
        .replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/, '$1-$2-$3-$4-$5');
}

注意事项

  • 浏览器环境下优先使用 crypto.getRandomValues() 而非 Math.random()
  • Node.js 环境可以使用 crypto.randomUUID()(Node 14.17.0+)
  • 如果需要严格的 RFC 4122 合规性,建议使用专门的库
  • 时间戳或计数器组合的方案不适用于分布式系统

标签: jsguid
分享给朋友:

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js实现轮播图

js实现轮播图

轮播图实现方法 基础HTML结构 <div class="slider"> <div class="slides"> <img src="image1.jpg…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…