我有一个脚本,当用户加载时,会创建一个唯一的ID。然后将其保存在localStorage
中并用于跟踪交易。有点像使用cookie,除非由于浏览器生成唯一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 :(得分:12)
我过去曾经用过这个。碰撞赔率应该非常低。
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());
};