Kaedah Javascript untuk menjana pengecam unik global (GUID, UUID)_kemahiran javascript

WBOY
Lepaskan: 2016-05-16 15:13:06
asal
2157 orang telah melayarinya

Pengecam unik global (GUID, Pengecam Unik Global) ​​juga dipanggil UUID (Pengecam Unik Sejagat).

GUID ialah pengecam angka yang dijana secara algoritma dengan panjang binari 128 bit. Format GUID ialah "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", dengan x ialah nombor heksadesimal 32 digit dalam julat 0-9 atau a-f. Dalam dunia yang ideal, tiada dua komputer atau kelompok komputer akan menjana GUID yang sama.

Jumlah bilangan GUID mencapai 2^128 (3.4×10^38), jadi kemungkinan menjana dua GUID yang sama secara rawak adalah sangat kecil, tetapi ia bukan 0. Istilah GUID kadangkala merujuk secara khusus kepada pelaksanaan piawaian UUID oleh Microsoft.

Apabila menjana beberapa nod, nod tersebut perlu ditandakan dengan ID unik Jawapan undian teratas berikut tersedia untuk rujukan

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;
};

Salin selepas log masuk

Komen di bawah jawapan: Kadar perlanggaran di bawah penyelesaian ini adalah kurang daripada 1/2^^122

Selain itu, saya mengesyorkan beberapa algoritma kepada semua orang

Algoritma 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);
  });
}
 

Salin selepas log masuk

Algoritma 3

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

Salin selepas log masuk

Algoritma 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('');
}
Salin selepas log masuk

Ini boleh menentukan panjang dan tapak. Contohnya

// 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"

Salin selepas log masuk

Algoritma 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;
}
 
Salin selepas log masuk

Sudah tentu, saya masih mengesyorkan Algoritma 1. Rakan-rakan boleh memilih mengikut keperluan mereka sendiri.

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!