Heim > Web-Frontend > js-Tutorial > Hauptteil

So generieren Sie global eindeutige Bezeichner (GUID, UUID) in Javascript_Javascript-Tipps

WBOY
Freigeben: 2016-05-16 15:13:06
Original
2158 Leute haben es durchsucht

Der global eindeutige Identifikator (GUID, Globally Unique Identifier) ​​wird auch UUID (Universally Unique IDentifier) ​​genannt.

GUID ist eine algorithmisch generierte numerische Kennung mit einer binären Länge von 128 Bit. Das Format der GUID ist „xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx“, wobei x eine 32-stellige Hexadezimalzahl im Bereich von 0-9 oder a-f ist. In einer idealen Welt generieren keine zwei Computer oder Computercluster dieselbe GUID.

Die Gesamtzahl der GUIDs erreicht 2^128 (3,4×10^38), daher ist die Möglichkeit, zwei identische GUIDs zufällig zu generieren, sehr gering, aber nicht 0. Der Begriff GUID bezieht sich manchmal speziell auf die Implementierung des UUID-Standards durch Microsoft.

Beim Generieren müssen einige Knoten durch eindeutige IDs gekennzeichnet werden. Die folgenden am häufigsten bewerteten Antworten stehen als Referenz zur Verfügung

function generateUUID() {
var d = new Date().getTime();
var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  var r = (d + Math.random()*16)%16 | 0;
  d = Math.floor(d/16);
  return (c=='x' ? r : (r&0x3|0x8)).toString(16);
});
return uuid;
};

Nach dem Login kopieren

Kommentare unter der Antwort: Die Kollisionsrate bei dieser Lösung beträgt weniger als 1/2^^122

Außerdem empfehle ich jedem mehrere Algorithmen

Algorithmus 2

function guid() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
    return v.toString(16);
  });
}
 

Nach dem Login kopieren

Algorithmus 3

function guid() {
  function S4() {
    return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
  }
  return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
}
 

Nach dem Login kopieren

Algorithmus 4

function uuid(len, radix) {
  var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
  var uuid = [], i;
  radix = radix || chars.length;
 
  if (len) {
   // Compact form
   for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix];
  } else {
   // rfc4122, version 4 form
   var r;
 
   // rfc4122 requires these characters
   uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-';
   uuid[14] = '4';
 
   // Fill in random data. At i==19 set the high bits of clock sequence as
   // per rfc4122, sec. 4.1.5
   for (i = 0; i < 36; i++) {
    if (!uuid[i]) {
     r = 0 | Math.random()*16;
     uuid[i] = chars[(i == 19) &#63; (r & 0x3) | 0x8 : r];
    }
   }
  }
 
  return uuid.join('');
}
Nach dem Login kopieren

Damit können Länge und Basis angegeben werden. Zum Beispiel

// 8 character ID (base=2)
uuid(8, 2) // "01001010"
// 8 character ID (base=10)
uuid(8, 10) // "47473046"
// 8 character ID (base=16)
uuid(8, 16) // "098F4D35"

Nach dem Login kopieren

Algorithmus 5

function uuid() {
  var s = [];
  var hexDigits = "0123456789abcdef";
  for (var i = 0; i < 36; i++) {
    s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
  }
  s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
  s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
  s[8] = s[13] = s[18] = s[23] = "-";
 
  var uuid = s.join("");
  return uuid;
}
 
Nach dem Login kopieren

Natürlich empfehle ich weiterhin Algorithmus 1. Freunde können nach ihren eigenen Bedürfnissen wählen.

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!