JS生成36为UUID

来源:互联网 发布:mapinfo地图数据下载 编辑:程序博客网 时间:2024/06/13 03:06
(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);    });  };})();

0 0