24 lines
711 B
JavaScript
24 lines
711 B
JavaScript
|
|
export default (len = 32, radix = null) => {
|
|
let chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
|
|
let uuid = [];
|
|
radix = radix || chars.length;
|
|
if (len) {
|
|
// 如果指定uuid长度,只是取随机的字符,0|x为位运算,能去掉x的小数位,返回整数位
|
|
for (let i = 0; i < len; i++) uuid[i] = chars[0 | Math.random() * radix];
|
|
} else {
|
|
let r;
|
|
// rfc4122标准要求返回的uuid中,某些位为固定的字符
|
|
uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
|
|
uuid[14] = '4';
|
|
|
|
for (let 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('');
|
|
}
|