Rumah > hujung hadapan web > tutorial js > Contoh pelaksanaan menjana GUID menggunakan kemahiran JavaScript_javascript asli

Contoh pelaksanaan menjana GUID menggunakan kemahiran JavaScript_javascript asli

WBOY
Lepaskan: 2016-05-16 16:37:02
asal
1495 orang telah melayarinya

GUID (Globally Unified Identifier) ​​​​merujuk kepada nombor yang dijana pada satu mesin, yang dijamin unik kepada semua mesin dalam masa dan ruang yang sama. Biasanya platform akan menyediakan API untuk menjana GUID. Algoritma penjanaan adalah menarik, menggunakan alamat kad Ethernet, masa nanosaat, ID cip dan banyak nombor yang mungkin. Satu-satunya kelemahan GUID ialah rentetan yang dihasilkan akan menjadi agak besar.

Format GUID ialah: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Semua orang tahu bahawa GUID tidak begitu berguna dalam pembangunan bahagian hadapan, tetapi jika anda perlu memasukkan ID, dan ID ini sepadan dengan bahagian belakang dan operasi lain yang memerlukan GUID, kami masih boleh menjana GUID untuk kemudahan.

Secara amnya, sangat mudah untuk menjana GUID dalam bahagian belakang atau bahasa pangkalan data seperti sql, java, C#, dll. Walau bagaimanapun, tiada cara untuk terus menjana GUID di bahagian hadapan, jadi anda hanya boleh menulis satu sendiri. Tetapi kerana GUID perlu mendapatkan alamat kad Ethernet, serta masa tahap nanosaat dan nombor lain. Sukar untuk bahagian hadapan untuk mendapatkan maklumat ini (sila beritahu saya jika anda tahu), tetapi kami boleh mensimulasikan dan menjana GUID, kodnya adalah seperti berikut:

/*
* Fungsi: Hasilkan kod GUID, di mana GUID terdiri daripada kurang daripada 14 tarikh dan masa dan lebih daripada 18 nombor rawak heksadesimal Terdapat kebarangkalian pengulangan GUID, tetapi kebarangkalian pengulangan adalah sangat rendah kebarangkalian ialah setiap 10ms 1/(16^18), iaitu 1/(16 hingga kuasa ke-18), kebarangkalian pengulangan adalah serendah yang boleh diabaikan*/

function GUID() {
this.date = new Date();

/* 判断是否初始化过,如果初始化过以下代码,则以下代码将不再执行,实际中只执行一次 */
if (typeof this.newGUID != 'function') {

/* 生成GUID码 */
GUID.prototype.newGUID = function() {
this.date = new Date();
var guidStr = '';
sexadecimalDate = this.hexadecimal(this.getGUIDDate(), 16);
sexadecimalTime = this.hexadecimal(this.getGUIDTime(), 16);
for (var i = 0; i < 9; i++) {
guidStr += Math.floor(Math.random()*16).toString(16);
}
guidStr += sexadecimalDate;
guidStr += sexadecimalTime;
while(guidStr.length < 32) {
guidStr += Math.floor(Math.random()*16).toString(16);
}
return this.formatGUID(guidStr);
}

/*
* 功能:获取当前日期的GUID格式,即8位数的日期:19700101
* 返回值:返回GUID日期格式的字条串
*/
GUID.prototype.getGUIDDate = function() {
return this.date.getFullYear() + this.addZero(this.date.getMonth() + 1) + this.addZero(this.date.getDay());
}

/*
* 功能:获取当前时间的GUID格式,即8位数的时间,包括毫秒,毫秒为2位数:12300933
* 返回值:返回GUID日期格式的字条串
*/
GUID.prototype.getGUIDTime = function() {
return this.addZero(this.date.getHours()) + this.addZero(this.date.getMinutes()) + this.addZero(this.date.getSeconds()) + this.addZero( parseInt(this.date.getMilliseconds() / 10 ));
}

/*
* 功能: 为一位数的正整数前面添加0,如果是可以转成非NaN数字的字符串也可以实现
* 参数: 参数表示准备再前面添加0的数字或可以转换成数字的字符串
* 返回值: 如果符合条件,返回添加0后的字条串类型,否则返回自身的字符串
*/
GUID.prototype.addZero = function(num) {
if (Number(num).toString() != 'NaN' && num >= 0 && num < 10) {
return '0' + Math.floor(num);
} else {
return num.toString();
}
}

/* 
* 功能:将y进制的数值,转换为x进制的数值
* 参数:第1个参数表示欲转换的数值;第2个参数表示欲转换的进制;第3个参数可选,表示当前的进制数,如不写则为10
* 返回值:返回转换后的字符串
*/
GUID.prototype.hexadecimal = function(num, x, y) {
if (y != undefined) {
return parseInt(num.toString(), y).toString(x);
} else {
return parseInt(num.toString()).toString(x);
}
}

/*
* 功能:格式化32位的字符串为GUID模式的字符串
* 参数:第1个参数表示32位的字符串
* 返回值:标准GUID格式的字符串
*/
GUID.prototype.formatGUID = function(guidStr) {
var str1 = guidStr.slice(0, 8) + '-',
str2 = guidStr.slice(8, 12) + '-',
str3 = guidStr.slice(12, 16) + '-',
str4 = guidStr.slice(16, 20) + '-',
str5 = guidStr.slice(20);
return str1 + str2 + str3 + str4 + str5;
}
}
}
Salin selepas log masuk

Objek GUID

Cukup simpan dalam fail JS dan rujuknya.

Kemudian kita hanya perlu

 var guid = new GUID();

makluman(guid.newGUID());

Anda boleh mendapatkan kod GUID.

Prinsip pelaksanaannya sangat mudah Di sini kita hanya menggunakan masa sistem dan lebih daripada 18 nombor rawak heksadesimal, dan menggunakan masa sistem untuk menukar kepada perenambelasan Walaupun ia masih boleh diulang, kebarangkalian pengulangan adalah sangat rendah . , boleh diabaikan.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan