项目需要获取GUID,在网上搜索了一些,经验证测试可用的三个版本,如下:
function getGuid() {
var guid = "";
var prefix11 = ""; //基于时间产生的随机数
var d = new Date();
var x = Math.random(); //获取一个0~1之间的随机数
var y = d.getTime(); //返回 1970 年 1 月 1 日至今的毫秒数
if (x < 0.1) x += 0.1;
//根据当前日期,产生GUID的前11位,避免GUID重复,引入一个随机数
prefix11 = Math.round(x * y * 10).toString(16);
guid += prefix11.substring(0, 8);
guid += "-";
guid += prefix11.substring(8, 11);
//后面的数据位,完全采用随机数产生
for (var i = 12; i <= 32; i++) {
var g = Math.floor(Math.random() * 16).toString(16);
guid += g;
if (i == 12 || i == 16 || i == 20) {
guid += "-";
}
}
return guid.toUpperCase();
}
function getGuid() {//修订的另外一个版本
var guid = "";
for (var i = 1; i <= 32; i++) {
var g = Math.floor(Math.random() * 16).toString(16);
guid += g;
if (i == 8 || i == 12 || i == 16 || i == 20) {
guid += "-";
}
}
return guid.toUpperCase();
}
function guid() {
//版本三,正则表达式和箭头函数。
return "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g, () =>
Math.floor(Math.random() * 16)
.toString(16)
.toUpperCase()
);
}
三个版本均可用,经测试,GUID生成格式如下:
'A3A01DF0-111B-A4F7-8550-81230875763D',
'AC662074-1712-7506-CC25-A04317C791B5',
'ADFAC19B-BCDA-0202-232B-B4D4482D486F',
'DF7CB7C7-94F5-3766-9FA0-EB7F60C9BA76',
'A83E7C86-C3A2-219A-08D2-7732579849D7',
'5FB16F42-079E-56B8-77DD-5B042B09D7BC',
'27104E7F-C4C0-85B6-DC0E-91185B85D69F',
'DAE4059A-6734-42D1-0F0C-B5FE8AEA18CF',
'8AC779B1-F484-CE34-3BD4-1D1F28F3E923'