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

  • KIT KAT

    KIT KAT

    3 EKİM 2005
  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011
  • USI Events

    USI Events

    6 AĞUSTOS 2013