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

JavaScript生成唯一ID的幾種常用方法

 更新時間:2025年08月22日 09:45:49   作者:藤原とラふ店丶  
這篇文章主要介紹了JavaScript生成唯一ID的幾種常用方法,UUID 是通用唯一標識符的縮寫,是由一個可以確保全球唯一性的算法生成的標識符,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

在 JavaScript 中生成唯一 ID(UUID)的方法有很多,根據(jù)場景需求(如唯一性強度、長度、可讀性等)可選擇不同方案。以下是幾種常用方法:

1. 簡單方案:時間戳 + 隨機數(shù)(適合一般場景)

利用當前時間戳(毫秒級)結(jié)合隨機數(shù),實現(xiàn)簡單且碰撞概率較低:

function generateSimpleId() {
  // 時間戳(毫秒)+ 3位隨機數(shù),確保同一毫秒內(nèi)不重復
  return Date.now().toString(36) + Math.random().toString(36).substr(2, 3);
}

// 使用示例
console.log(generateSimpleId()); // 類似:"1h8t0d3-xyz"(36進制更短)

特點

  • 實現(xiàn)簡單,長度較短(約12-15位);
  • 適合前端臨時標識(如DOM元素ID、臨時緩存鍵);
  • 高并發(fā)下可能有極低碰撞風險(可增加隨機數(shù)長度降低概率)。

2. 標準 UUID v4(推薦,通用性強)

UUID(通用唯一識別碼)是行業(yè)標準,其中 v4 版本基于隨機數(shù)生成,碰撞概率極低(可忽略),格式為 8-4-4-4-12 共36位:

function generateUUID() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
    const r = Math.random() * 16 | 0;
    const v = c === 'x' ? r : (r & 0x3 | 0x8);
    return v.toString(16);
  });
}

// 使用示例
console.log(generateUUID()); // 類似:"f47ac10b-58cc-4372-a567-0e02b2c3d479"

特點

  • 符合 UUID 標準,通用性強(后端、數(shù)據(jù)庫等場景兼容);
  • 隨機數(shù)生成,碰撞概率極低(適合生產(chǎn)環(huán)境);
  • 長度固定(36位),包含連字符,可讀性較好。

3. 更安全的隨機數(shù)(基于 crypto API)

瀏覽器環(huán)境下可使用 crypto.getRandomValues 生成加密級隨機數(shù),進一步降低碰撞風險:

function generateSecureUUID() {
  const array = new Uint8Array(16);
  window.crypto.getRandomValues(array);
  
  // 符合 UUID v4 格式:第6位固定為4,第8位固定為8-11之間的值
  array[6] = (array[6] & 0x0f) | 0x40;
  array[8] = (array[8] & 0x3f) | 0x80;
  
  return Array.from(array, byte => ('0' + (byte & 0xff).toString(16)).slice(-2))
    .join('')
    .replace(/^(.{8})(.{4})(.{4})(.{4})(.{12})$/, '$1-$2-$3-$4-$5');
}

// 使用示例
console.log(generateSecureUUID()); // 標準UUID格式,隨機數(shù)更安全

特點

  • 隨機數(shù)質(zhì)量更高(加密級),適合安全性要求高的場景(如token、會話ID);
  • 需瀏覽器支持 crypto API(幾乎所有現(xiàn)代瀏覽器都支持);
  • 仍符合 UUID 標準格式。

4. 短ID(適合需要短標識的場景)

生成更短的唯一ID(如8-10位),可通過基數(shù)轉(zhuǎn)換(36進制/62進制)實現(xiàn):

function generateShortId(length = 8) {
  const chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  let id = '';
  for (let i = 0; i < length; i++) {
    // 隨機取字符(使用crypto提高隨機性)
    const randomIndex = Math.floor(window.crypto.getRandomValues(new Uint32Array(1))[0] / (0xFFFFFFFF + 1) * chars.length);
    id += chars[randomIndex];
  }
  return id;
}

// 使用示例
console.log(generateShortId()); // 類似:"xY3p7Q9z"

特點

  • 長度可控(默認8位,碰撞概率隨長度增加而降低);
  • 包含大小寫字母和數(shù)字,可讀性較好;
  • 適合URL參數(shù)、短鏈接等需要簡短標識的場景。

選擇建議:

  • 一般前端場景:優(yōu)先用 UUID v4(通用且可靠);
  • 高安全性場景:用 crypto 生成的 UUID;
  • 短標識需求:用 短ID生成函數(shù)(注意長度與碰撞風險平衡);
  • 簡單臨時標識:用 時間戳+隨機數(shù)(實現(xiàn)最簡單)。

這些方法基本能覆蓋大部分前端生成唯一ID的需求,可根據(jù)實際場景選擇。

總結(jié)

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

相關(guān)文章

  • onclick和onblur沖突問題的快速解決方法

    onclick和onblur沖突問題的快速解決方法

    下面小編就為大家?guī)硪黄猳nclick和onblur沖突問題的快速解決方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考
    2016-04-04
  • JS基于Location實現(xiàn)訪問Url、重定向及刷新頁面的方法分析

    JS基于Location實現(xiàn)訪問Url、重定向及刷新頁面的方法分析

    這篇文章主要介紹了JS基于Location實現(xiàn)訪問Url、重定向及刷新頁面的方法,結(jié)合實例形式分析了javascript使用Location進行URL訪問、重定向、頁面刷新等操作相關(guān)原理、操作技巧與注意事項,需要的朋友可以參考下
    2018-12-12
  • JS中appendChild追加子節(jié)點無效的解決方法

    JS中appendChild追加子節(jié)點無效的解決方法

    這篇文章主要給大家介紹了關(guān)于JS中appendChild追加子節(jié)點無效的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習
    2018-10-10
  • 前端實現(xiàn)獲取后端返回的文件流并下載三種方法

    前端實現(xiàn)獲取后端返回的文件流并下載三種方法

    文件下載是最常見的流形式返回數(shù)據(jù)的應(yīng)用場景之一,通過流形式返回文件內(nèi)容,可以避免將整個文件加載到內(nèi)存中,從而減少內(nèi)存消耗,這篇文章主要介紹了前端實現(xiàn)獲取后端返回的文件流并下載的三種方法,需要的朋友可以參考下
    2025-04-04
  • js設(shè)置鼠標懸停改變背景色實現(xiàn)詳解

    js設(shè)置鼠標懸停改變背景色實現(xiàn)詳解

    這篇文章主要介紹了js設(shè)置鼠標懸停改變背景色實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • js使用遞歸解析xml

    js使用遞歸解析xml

    這篇文章主要介紹了js使用遞歸解析xml,需要的朋友可以參考下
    2014-12-12
  • 編寫一個javascript元循環(huán)求值器的方法

    編寫一個javascript元循環(huán)求值器的方法

    這篇文章主要介紹了編寫一個javascript元循環(huán)求值器的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-04-04
  • ???????基于el-table和el-pagination實現(xiàn)數(shù)據(jù)的分頁效果流程詳解

    ???????基于el-table和el-pagination實現(xiàn)數(shù)據(jù)的分頁效果流程詳解

    本文主要介紹了???????基于el-table和el-pagination實現(xiàn)數(shù)據(jù)的分頁效果,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-11-11
  • JavaScript 事件流、事件處理程序及事件對象總結(jié)

    JavaScript 事件流、事件處理程序及事件對象總結(jié)

    JS與HTML之間的交互通過事件實現(xiàn),事件就是文檔或瀏覽器窗口中發(fā)生的一些特定的交互瞬間,可以使用(或處理程序)來預定事件,以便事件發(fā)生時執(zhí)行相應(yīng)的代碼,本文將介紹JS事件相關(guān)的基礎(chǔ)知識,
    2017-04-04
  • 微信小程序自定義支持圖片的彈窗

    微信小程序自定義支持圖片的彈窗

    這篇文章主要為大家詳細介紹了微信小程序自定義支持圖片的彈窗,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12

最新評論

曲沃县| 泰顺县| 贡山| 华坪县| 建始县| 晋中市| 佳木斯市| 宁远县| 开平市| 通城县| 达孜县| 龙里县| 双峰县| 平和县| 滦平县| 慈溪市| 遵化市| 峨眉山市| 志丹县| 双牌县| 吴江市| 嘉义县| 蓝山县| 阿尔山市| 琼结县| 阳江市| 永济市| 昂仁县| 靖边县| 张家港市| 石城县| 平山县| 宜黄县| 于田县| 文昌市| 淮南市| 富裕县| 虞城县| 思茅市| 文化| 墨玉县|