37

ユーザーがロードしたときに一意の ID を作成するスクリプトがあります。その後、これが保存されlocalStorage、トランザクションの追跡に使用されます。ブラウザが一意の ID を生成しているため、サーバーに送信されるときに衝突が発生する可能性があることを除いて、Cookie の使用に似ています。現在、次のコードを使用しています。

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 を作成するためのより良い方法についてのフィードバックが必要です。何か案は?

4

1 に答える 1

16

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

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());
};
于 2012-08-31T23:23:26.093 に答える