Javascript生成唯一值GUID/UUID标识客户端

原创 tiangr  2016-10-25 16:06  阅读 369 次

GUID(全球唯一标识)是微软使用的一个术语,由一个特定的算法,给某一个实体,如Word文档,创建一个唯一的标识,GUID值就是这个唯一的标识码.除了.Net有专门的方法生成外,JS也可以生成GUID,一般有两种方式,分别是

  1. //JS生成GUID函数,类似.net  
  2. function NewGuid()
  3. {
  4.    function S4()
  5.    {
  6.        return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
  7.    }
  8.     return (S4()+S4()+"-"+S4()+"-"+S4()+"-"+S4()+"-"+S4()+S4()+S4());
  9. }
 第二种方法,生成固定位数为36的字符串:
  1. function newGuid()
  2. {
  3.     var guid = "";
  4.     for (var i = 1; i <= 32; i++){
  5.         var n = Math.floor(Math.random()*16.0).toString(16);
  6.         guid +=   n;
  7.         if((i==8)||(i==12)||(i==16)||(i==20))
  8.             guid += "-";
  9.     }
  10.     return guid;
  11. }

StackOverflow上还提供了其他几种方法

利用客户端获取到的时间戳生成唯一值。

https://jsfiddle.net/xg7tek9j/7/

  1. function generateUUID(){
  2.     var d = new Date().getTime();
  3.     if(window.performance && typeof window.performance.now === "function"){
  4.         d += performance.now(); //use high-precision timer if available
  5.     }
  6.     var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  7.         var r = (d + Math.random()*16)%16 | 0;
  8.         d = Math.floor(d/16);
  9.         return (c=='x' ? r : (r&0x3|0x8)).toString(16);
  10.     });
  11.     return uuid;
  12. }

* 推荐获取唯一值的方法:

  1. 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
  2.     var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
  3.     return v.toString(16);
  4. });

E.g:

  1. >>> 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {var r = Math.random()*16|0,v=c=='x'?r:r&0x3|0x8;return v.toString(16);});
  2. "3bce4931-6c75-41ab-afe0-2ec108a30860"

更多:另一个相关答案 - http://stackoverflow.com/questions/6906916/collisions-when-generating-uuids-in-javascript

查看算法的执行效率 - http://jsfiddle.net/jcward/7hyaC/3/

特别提示:本站资源全部免费下载,因服务器需经费维护,文中部分外链点击后会进入广告,请耐心等待5秒即可跳过广告进入目标页面。如遇页面外链打不开或下载地址失效,您可以在评论中指出错误,或扫描页面底部二维码。
本文地址:http://www.tiangr.com/javascript-sheng-cheng-guid.html
版权声明:本文为原创文章,版权归 tiangr 所有,欢迎分享本文,转载请保留出处!

发表评论


表情