[JavaScript]JS產生UUID

來源:互聯網
上載者:User
/*!Math.uuid.js (v1.4)http://www.broofa.commailto:robert@broofa.comCopyright (c) 2010 Robert KiefferDual 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 & 0 x3) | 0 x8 : 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 <= 0 x02) rnd = 0 x2000000 + (Math.random()*0 x1000000)|0;        r = rnd & 0 xf;        rnd = rnd >> 4;        uuid[i] = chars[(i == 19) ? (r & 0 x3) | 0 x8 : 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&0 x3|0 x8);      return v.toString(16);    });  };})();

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.