SORU
19 EYLÜL 2008, Cuma


JavaScript GUID / UUID oluşturmak?

Genel benzersiz JavaScript tanımlayıcılar oluşturmak için çalışıyorum. Rutinleri "" ve yerleşik rasgele sayı üreteci, vb . seribaşı rasgele tüm tarayıcılar, ne kadar kullanılabilir emin değilim

GUID / UUID en az 32 karakter olmalı ve etraflarında geçen zaman ASCII aralığında sorun önlemek için kalmalı.

CEVAP
22 Ocak 2010, Cuma


Rfc4122 sürüm 4 uyumlu bir çözüm için, bir-liner(ish) bu çözüm en kompakt gelirim.:

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

E. g:

>>> '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);});
"3bce4931-6c75-41ab-afe0-2ec108a30860"

[Güncelleme, 2015-06-02: UUID teklik ağır alttaki rasgele sayı (RNG) jeneratör dayanır unutmayın. Çözüm yukarıda için kısaltma Math.random() kullanır, ancak Math.random()değilgarantili yüksek kalitede bir bölgede de yapalım. Bakın Adam Hyland excellent writeup on Math.random() ayrıntılar için. Yüksek kalite bölgede de yapalım varsa API.] kullanan daha sağlam bir çözüm için, node-uuid.jsgibi bir şey düşünün[Yasal Uyarı: Ben yazar],

[Güncelleme, 2015-08-26: Yan not olarak, gist Bu kaç Kimlikleri çarpışma belirli bir olasılık ulaşmadan oluşturulabilir belirleme. 3 ile örneğin.26x1015sürüm 4 RFC4122 olacak biçimde bir 1-in-a-milyon çarpışma olasılığı.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Avast

    Avast

    27 NİSAN 2006
  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • GenTechPC

    GenTechPC

    1 Temmuz 2007