<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          js 生成UUID的幾種方法

          共 5772字,需瀏覽 12分鐘

           ·

          2022-06-01 18:00

          作者:墨城

          來源:SegmentFault  思否社區(qū) 


          簡介



          UUID(Universally Unique IDentifier) 全局唯一標識符。
          UUID是一種由算法生成的二進制長度為128位的數(shù)字標識符。UUID
          的格式為“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中的 x 是 0-9 或 a-f
          范圍內(nèi)的一個32位十六進制數(shù)。在理想情況下,任何計算機和計算機集群都不會生成兩個相同的UUID。


          第一種



          function guid() {
              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);
              });
          }
          guid() // "a1ca0f7b-51bd-4bf3-a5d5-6a74f6adc1c7"


          第二種



          function uuid() {
              var s = [];
              var hexDigits = "0123456789abcdef";
              for (var i = 0; i < 36; i++) {
                  s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
              }
              s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
              s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
              s[8] = s[13] = s[18] = s[23] = "-";

              var uuid = s.join("");
              return uuid;
          }
          uuid() // "ffb7cefd-02cb-4853-8238-c0292cf988d5"


          第三種



          function guid2() {
              function S4() {
                  return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
              }
              return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
          }
          guid2() // "748eea29-f842-4af9-a552-e1e1aa3ed979"


          第四種



          // 指定長度和基數(shù)
          function uuid2(len, radix) {
              var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.split('');
              var 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('');
          }
          uuid2(16, 16) // "277571702EE33E11"


          第五種


          說明:生成32位UUID方法

          function uuid() {
              var s = [];
              var hexDigits = "0123456789abcdef";
              for (var i = 0; i < 32; i++) {
              s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
              }
              s[14] = "4"; // bits 12-15 of the time_hi_and_version field to 0010
              s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1); // bits 6-7 of the clock_seq_hi_and_reserved to 01
              s[8] = s[13] = s[18] = s[23];
              var uuid = s.join("");
              return uuid;
          }




          點擊左下角閱讀原文,到 SegmentFault 思否社區(qū) 和文章作者展開更多互動和交流,掃描下方”二維碼“或在“公眾號后臺回復“ 入群 ”即可加入我們的技術(shù)交流群,收獲更多的技術(shù)文章~

          - END -


          瀏覽 49
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费看逼的网站 | 丝袜足交片| www.av乱伦 | 黄色电影网站免费观看 | 91日爽免费在线观看 |