Heim > Web-Frontend > js-Tutorial > Implementierungsbeispiel für die Generierung einer GUID mithilfe nativer JavaScript_Javascript-Kenntnisse

Implementierungsbeispiel für die Generierung einer GUID mithilfe nativer JavaScript_Javascript-Kenntnisse

WBOY
Freigeben: 2016-05-16 16:37:02
Original
1495 Leute haben es durchsucht

GUID (Globally Unified Identifier) ​​bezieht sich auf eine auf einer Maschine generierte Nummer, die garantiert für alle Maschinen zur gleichen Zeit und im gleichen Raum eindeutig ist. Normalerweise stellt die Plattform eine API zum Generieren einer GUID bereit. Interessant ist der Generierungsalgorithmus, der die Adresse der Ethernet-Karte, die Nanosekundenzeit, die Chip-ID und viele mögliche Zahlen verwendet. Der einzige Nachteil von GUID besteht darin, dass die resultierende Zeichenfolge relativ groß ist.

Das Format der GUID ist: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Jeder weiß, dass GUID in der Front-End-Entwicklung nicht sehr nützlich ist. Wenn Sie jedoch eine ID einfügen müssen und diese ID dem Backend und anderen Vorgängen entspricht, die eine GUID erfordern, können wir der Einfachheit halber trotzdem eine GUID generieren.

Im Allgemeinen ist es sehr einfach, GUIDs in Backend- oder Datenbanksprachen wie SQL, Java, C# usw. zu generieren. Es gibt jedoch keine Möglichkeit, GUIDs direkt im Frontend zu generieren, sodass Sie nur eine schreiben können alleine. Aber weil die GUID die Adresse der Ethernet-Karte sowie die Zeit im Nanosekundenbereich und andere Zahlen erhalten muss. Für das Front-End ist es schwierig, diese Informationen zu erhalten (bitte sagen Sie mir, ob Sie sie wissen), aber wir können GUID simulieren und generieren. Der Code lautet wie folgt:

/*
* Funktion: Generieren Sie einen GUID-Code, wobei die GUID aus weniger als 14 Datums- und Uhrzeitangaben und mehr als 18 hexadezimalen Zufallszahlen besteht. Es besteht eine gewisse Wiederholungswahrscheinlichkeit der GUID, die Wiederholungswahrscheinlichkeit ist jedoch äußerst gering Die Wahrscheinlichkeit liegt alle 10 ms bei 1/(16^18), also 1/(16 hoch 18), die Wiederholungswahrscheinlichkeit ist vernachlässigbar gering*/

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;
}
}
}
Nach dem Login kopieren

GUID-Objekt

Speichern Sie es einfach in einer JS-Datei und verweisen Sie darauf.

Dann müssen wir nur noch

 var guid = new GUID();

Alert(guid.newGUID());

Sie können den GUID-Code erhalten.

Das Implementierungsprinzip ist sehr einfach. Hier verwenden wir nur die Systemzeit und mehr als 18 hexadezimale Zufallszahlen. Obwohl eine Wiederholung möglich ist, ist die Wahrscheinlichkeit einer Wiederholung äußerst gering . , kann ignoriert werden.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage