最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用JavaScript生成UUID/GUID的三種方法

 更新時(shí)間:2026年03月15日 13:54:54   作者:hefeng_aspnet  
文章介紹了三種使用JavaScript生成UUID/GUID的方法及其優(yōu)缺點(diǎn),方法1簡單但格式不規(guī)范;方法2解決了格式問題但可能產(chǎn)生碰撞;方法3結(jié)合時(shí)間戳解決了格式和碰撞問題,主流瀏覽器支持,但I(xiàn)E不支持,需要的朋友可以參考下

UUID 是「Universally Unique IDentifier」(通用唯一識別碼)的縮寫,目的是唯一的標(biāo)示信息。UUID 包含 32 個(gè)十六進(jìn)位數(shù)字,并用「-」分隔成五組,每組分別有8、4、4、4、12的數(shù)字。例如:「550e8400-e29b-41d4-a716-446655440000」是一組完整的 UUID。

這里列了幾種使用 JavaScript 產(chǎn)生 UUID / GUID的方法、優(yōu)缺比較。

方法 1

最簡單的方法就是使用 Math.random() 產(chǎn)出任意16進(jìn)制數(shù)字,但

格式不符合 RFC4122 規(guī)范

Math.random() 產(chǎn)出的數(shù)字可能重復(fù) (collision),保存前必須做比對
function _uuid() {
  function s4() {
    return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);
  }
  return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
}
var uuid = _uuid(); //b3165466-df5b-c3d7-0e94-79d94e8c692f

接下來的方法都是基于 Math.random() 做改善,不管是改進(jìn)格式或唯一性。

方法 2

先擺好格式,再利用 Math.random() 產(chǎn)出任意數(shù)字填入格式中。這個(gè)方法解決了方法 1 的格式問題,但仍可能有 collision。

function _uuid() {
? 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);});
}
var uuid = _uuid(); //5fc84f46-5743-4ed3-a94d-1ba63b8022a5

方法 3

結(jié)合 time stamp 與方法 2,同時(shí)解決了格式和 collision 問題。

由于加上 Performance.now() (亞毫秒級的時(shí)間戳記),很難產(chǎn)生 collision。主流瀏覽器皆支持,但 IE 只支持 10 以上或 Edge。

function _uuid() {
  var d = Date.now();
  if (typeof performance !== 'undefined' && typeof performance.now === 'function'){
    d += performance.now(); //use high-precision timer if available
  }
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
    var r = (d + Math.random() * 16) % 16 | 0;
    d = Math.floor(d / 16);
      return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
  });
}

測試

for(var i = 0; i < 10; i++) {
  console.log(_uuid());
}
b382bd5-becd-4d93-8d3f-98aad78a049e
e3dea0f5-37f2-4d79-ae58-490af3228069
3e8d1c2b-f9f9-4a74-a8af-a4e8bebea438
eefbada8-efee-439a-af83-a80dde423dd6
8084d5dd-4f91-4590-927c-4751b49f2de0
06423d2c-1d62-429b-b6f9-de0a8d4ea95f
8b86b39e-5f2e-4abd-a8f0-2108a39a1d8a
62c8628e-e2e2-439d-80cd-b86e31e4bd59
1322e5db-91b0-4f12-94bd-fb4989d3cb95
0db3399e-55c3-44ba-822e-afcabf9b702b

到此這篇關(guān)于使用JavaScript生成UUID/GUID的三種方法的文章就介紹到這了,更多相關(guān)JavaScript生成UUID/GUID內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解iframe與frame的區(qū)別

    詳解iframe與frame的區(qū)別

    Frame與Iframe兩者可以實(shí)現(xiàn)的功能基本相同,不過Iframe比Frame具有更多的靈活性,通過本文給大家詳解細(xì)節(jié)iframe與frame的區(qū)別,對iframe與frame的區(qū)別相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • JavaScript中的邏輯判斷符&&、||與!介紹

    JavaScript中的邏輯判斷符&&、||與!介紹

    這篇文章主要介紹了JavaScript中的邏輯判斷符&&、||與!介紹,本文講解了邏輯與&&的處理規(guī)則、邏輯或||的處理規(guī)則、!操作符,需要的朋友可以參考下
    2014-12-12
  • 使用js實(shí)現(xiàn)的簡單拖拽效果

    使用js實(shí)現(xiàn)的簡單拖拽效果

    本文給大家分享的是使用純JS實(shí)現(xiàn)的簡單的拖拽效果的插件,算是對自己javascript學(xué)習(xí)的一個(gè)小的檢驗(yàn),如果小伙伴們需要復(fù)雜的拖拽效果,還是考慮jQuery的draggable吧,更成熟一些。
    2015-03-03
  • Bootstrap安裝環(huán)境配置教程分享

    Bootstrap安裝環(huán)境配置教程分享

    這篇文章主要為大家分享了Bootstrap安裝環(huán)境配置教程,安裝步驟非常簡單,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 在IE8上JS實(shí)現(xiàn)combobox支持拼音檢索功能

    在IE8上JS實(shí)現(xiàn)combobox支持拼音檢索功能

    這篇文章主要介紹了在IE8上JS實(shí)現(xiàn)combobox支持拼音檢索功能的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-05-05
  • ES6入門教程之Array.from()方法

    ES6入門教程之Array.from()方法

    這篇文章主要給大家介紹了關(guān)于ES6入門教程之Array.from()方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ES6具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • JS常見內(nèi)存泄漏及解決方案解析

    JS常見內(nèi)存泄漏及解決方案解析

    這篇文章主要介紹了JS常見內(nèi)存泄漏及解決方案解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 原生js實(shí)現(xiàn)拖拽移動與縮放效果

    原生js實(shí)現(xiàn)拖拽移動與縮放效果

    這篇文章主要為大家詳細(xì)介紹了原生js實(shí)現(xiàn)拖拽移動與縮放效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JavaScript中的各種寬高屬性的實(shí)現(xiàn)

    JavaScript中的各種寬高屬性的實(shí)現(xiàn)

    這篇文章主要介紹了JavaScript中的各種寬高屬性的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • js中將URL中的參數(shù)提取出來作為對象的實(shí)現(xiàn)代碼

    js中將URL中的參數(shù)提取出來作為對象的實(shí)現(xiàn)代碼

    將URL中的參數(shù)提取出來作為對象的實(shí)現(xiàn)代碼,適合希望獲取url參數(shù)的朋友。
    2011-08-08

最新評論

崇文区| 上杭县| 大埔县| 乐山市| 香港| 色达县| 延庆县| 南昌县| 平江县| 太白县| 大关县| 英德市| 南陵县| 察雅县| 井研县| 绥中县| 桑日县| 桦南县| 施秉县| 伽师县| 新野县| 南开区| 淅川县| 安溪县| 翁牛特旗| 珠海市| 宜良县| 永善县| 富宁县| 肥城市| 筠连县| 麻城市| 福泉市| 洮南市| 渝北区| 凤城市| 凌海市| 河曲县| 大关县| 棋牌| 荆州市|