2012-08-31 26 views
11

Kullanıcı yüklendiğinde benzersiz bir kimlik oluşturan bir komut dosyası var. Daha sonra localStorage numarasına kaydedilir ve işlemleri izlemek için kullanılır. Tarayıcı, benzersiz kimliği üretmesi dışında, sunucuya gönderildiğinde çakışmalar olabileceği dışında, bir çerez kullanma gibi bir sıralama. Şu anda aşağıdaki kodu kullanıyorum:JavaScript'te Küresel Olarak Benzersiz Kimlik Oluşturun

function genID() { 
    return Math.random().toString(36).substr(2) 
     + Math.random().toString(36).substr(2) 
     + Math.random().toString(36).substr(2) 
     + Math.random().toString(36).substr(2); 
} 

Bu süper temel uygulamasıdır gerçekleştirmek ve sunucu üzerinde çakışmalarını engeller "daha rasgele" id oluşturmak için daha iyi yollar bazı geri bildirimler istiyorum. Herhangi bir fikir?

+0

@CDSanchez Mother effin ... Aramalarımda bunu nasıl özledim ... –

+0

does javascript GUID? –

+0

@SamIam phpjs, altçizgi ve çok daha fazla kitaplıkların benzersiz bir işlevi vardır, ancak JS bir doğal olarak sağlamaz – SgtPooki

cevap

8

Bunu geçmişte kullandım. Çarpışma oranları çok düşük olmalıdır.

var generateUid = function (separator) { 
    /// <summary> 
    /// Creates a unique id for identification purposes. 
    /// </summary> 
    /// <param name="separator" type="String" optional="true"> 
    /// The optional separator for grouping the generated segmants: default "-".  
    /// </param> 

    var delim = separator || "-"; 

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

    return (S4() + S4() + delim + S4() + delim + S4() + delim + S4() + delim + S4() + S4() + S4()); 
}; 
+0

Ben rasgele değer uzunluğunu sınırlamak yolu seviyorum. –

+0

@James South, ben tam olarak anlamadım .. açıklayabilir misiniz? –

+0

'0x10000' ne yapıyor? –

İlgili konular