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

  • atKristaBradford

    atKristaBrad

    4 Aralık 2010
  • colacas

    colacas

    29 EKİM 2006
  • Matt Davis

    Matt Davis

    4 ŞUBAT 2006