2012-08-31 33 views
11

我有一个脚本,当用户加载时,会创建一个唯一的ID。然后保存在localStorage并用于跟踪交易。有点像使用cookie,除非浏览器正在生成唯一的ID,否则在发送到服务器时可能会发生冲突。现在,我使用下面的代码:在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母亲effin ...我怎么会错过在我的搜索... –

+0

没有JavaScript有GUID? –

+0

@SamIam phpjs,下划线,我敢肯定,更多的图书馆有一个uniqueId函数,但JS本身不提供一个 – 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

@詹姆斯南,我没有得到它..你能解释一下吗? –

+0

'0x10000'是做什么的? –