2012-08-31 14 views
11

私は、ユーザーが読み込んだときに一意のIDを作成するスクリプトを用意しています。 localStorageに保存され、トランザクションの追跡に使用されます。ブラウザが一意のIDを生成しているため、サーバーに送信されたときに衝突が発生する可能性がある点を除いて、Cookieを使用するのと同じように並べ替えます。今、私は次のコードを使用しています:JavaScriptでグローバルに固有のIDを作成する

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

私はこれがスーパー基本的な実装で実現し、サーバ上の衝突を防ぐことができます「よりランダム」IDを作成するためのより良い方法のいくつかのフィードバックをしたいです。何か案は?

+0

@CDSanchezマザーエフェイン...どのように私は私の検索でそれをお見逃ししましたか... –

+0

javascriptはGUIDを持っていますか? –

+0

@SamIam phpjs、アンダースコア、そしてもっと多くのライブラリにuniqueId関数があると確信していますが、JSはネイティブに1つを提供しません。 – SgtPooki

答えて

8

私は過去にこれを使用しました。衝突の確率は非常に低くなるはずです。

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

私はあなたがランダムな値の長さを制約したのが好きです。 –

+0

@James South、私はそれを正確には得られなかった。あなたは説明することができる? –

+0

「0x10000」は何をしますか? –

関連する問題