`
happyqing
  • 浏览: 3156821 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

js生成UUID

    博客分类:
  • js
阅读更多

js生成UUID

调用方法:可看js说明

Math.uuid(); 常用的

Math.uuidFast(); 这个不用的话可以删了

Math.uuidCompact(); 这个不用的话可以删了

 

/*! 
Math.uuid.js (v1.4) 
http://www.broofa.com 
mailto:robert@broofa.com 
  
Copyright (c) 2010 Robert Kieffer 
Dual licensed under the MIT and GPL licenses. 
*/
  
/* 
 * Generate a random uuid. 
 * 
 * USAGE: Math.uuid(length, radix) 
 *   length - the desired number of characters 
 *   radix  - the number of allowable values for each character. 
 * 
 * EXAMPLES: 
 *   // No arguments  - returns RFC4122, version 4 ID 
 *   >>> Math.uuid() 
 *   "92329D39-6F5C-4520-ABFC-AAB64544E172" 
 * 
 *   // One argument - returns ID of the specified length 
 *   >>> Math.uuid(15)     // 15 character ID (default base=62) 
 *   "VcydxgltxrVZSTV" 
 * 
 *   // Two arguments - returns ID of the specified length, and radix. (Radix must be <= 62) 
 *   >>> Math.uuid(8, 2)  // 8 character ID (base=2) 
 *   "01001010" 
 *   >>> Math.uuid(8, 10) // 8 character ID (base=10) 
 *   "47473046" 
 *   >>> Math.uuid(8, 16) // 8 character ID (base=16) 
 *   "098F4D35" 
 */
(function() { 
  // Private array of chars to use 
  var CHARS = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split(''); 
  
  Math.uuid = function (len, radix) { 
    var chars = CHARS, uuid = [], i; 
    radix = radix || chars.length; 
  
    if (len) { 
      // Compact form 
      for (i = 0; i < len; i++) uuid[i] = chars[0 | Math.random()*radix]; 
    } else { 
      // rfc4122, version 4 form 
      var r; 
  
      // rfc4122 requires these characters 
      uuid[8] = uuid[13] = uuid[18] = uuid[23] = '-'; 
      uuid[14] = '4'; 
  
      // Fill in random data.  At i==19 set the high bits of clock sequence as 
      // per rfc4122, sec. 4.1.5 
      for (i = 0; i < 36; i++) { 
        if (!uuid[i]) { 
          r = 0 | Math.random()*16; 
          uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; 
        } 
      } 
    } 
  
    return uuid.join(''); 
  }; 
  
  // A more performant, but slightly bulkier, RFC4122v4 solution.  We boost performance 
  // by minimizing calls to random() 
  Math.uuidFast = function() { 
    var chars = CHARS, uuid = new Array(36), rnd=0, r; 
    for (var i = 0; i < 36; i++) { 
      if (i==8 || i==13 ||  i==18 || i==23) { 
        uuid[i] = '-'; 
      } else if (i==14) { 
        uuid[i] = '4'; 
      } else { 
        if (rnd <= 0x02) rnd = 0x2000000 + (Math.random()*0x1000000)|0; 
        r = rnd & 0xf; 
        rnd = rnd >> 4; 
        uuid[i] = chars[(i == 19) ? (r & 0x3) | 0x8 : r]; 
      } 
    } 
    return uuid.join(''); 
  }; 
  
  // A more compact, but less performant, RFC4122v4 solution: 
  Math.uuidCompact = function() { 
    return '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); 
    }); 
  }; 
})(); 

 

<html>
<head>
	<title>UUID测试</title>
	<script src="uuid.js"></script>
	<script src="jquery-1.7.2.min.js"></script>
	<script>
			$(function(){
					var begin = new Date();
					for(var i=0;i<1000;i++){
						//Math.uuid(); //运算1000次,47毫秒
						//Math.uuidFast();//运算1000次,31毫秒
						//Math.uuidCompact();//运算1000次,78-94毫秒
						//$("body").append(Math.uuid()+'<br/>');
						$("body").append(Math.uuid()+'<br/>');
					}
					var end = new Date();
					alert(end.getTime()-begin.getTime()); //1000个 702毫秒
			});
	</script>
</head>
<body>
UUID测试<br/>
</body>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics