js实现uuid
UUID 的 JavaScript 实现方法
UUID(Universally Unique Identifier)是一种用于生成唯一标识符的标准。以下是几种在 JavaScript 中实现 UUID 的方法。
使用 crypto.randomUUID()
现代浏览器支持 crypto.randomUUID() 方法,可以生成符合 RFC 4122 标准的 UUID v4。
const uuid = crypto.randomUUID();
console.log(uuid); // 输出类似 "d1a2b3c4-5678-90ef-1234-567890abcdef"
使用 crypto.getRandomValues()
在不支持 randomUUID() 的环境中,可以通过 crypto.getRandomValues() 生成随机字节并转换为 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()); // 输出类似 "a1b2c3d4-e5f6-7890-1234-567890abcdef"
使用第三方库
如果项目允许引入第三方库,可以使用 uuid 库来生成 UUID。
import { v4 as uuidv4 } from 'uuid';
const uuid = uuidv4();
console.log(uuid); // 输出符合 RFC 4122 的 UUID v4
简单随机字符串实现
如果需要快速生成类似 UUID 的字符串,但不严格要求符合 RFC 4122 标准,可以使用以下方法:

function simpleUUID() {
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(simpleUUID()); // 输出类似 "a1b2c3d4-e5f6-7890-1234-567890abcdef"
注意事项
crypto.randomUUID()是推荐方法,但仅支持较新的浏览器和 Node.js 环境。- 如果需要兼容旧环境,可以使用
crypto.getRandomValues()或第三方库。 - 避免使用
Math.random()生成 UUID,因为它可能不够随机且不符合标准。






