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

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

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

前言

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

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

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

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

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

特點(diǎn)

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

2. 標(biāo)準(zhǔn) UUID v4(推薦,通用性強(qiáng))

UUID(通用唯一識別碼)是行業(yè)標(biāo)準(zhǔn),其中 v4 版本基于隨機(jī)數(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"

特點(diǎn)

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

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

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

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()); // 標(biāo)準(zhǔn)UUID格式,隨機(jī)數(shù)更安全

特點(diǎn)

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

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

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

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

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

特點(diǎn)

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

選擇建議:

  • 一般前端場景:優(yōu)先用 UUID v4(通用且可靠);
  • 高安全性場景:用 crypto 生成的 UUID;
  • 短標(biāo)識需求:用 短ID生成函數(shù)(注意長度與碰撞風(fēng)險平衡);
  • 簡單臨時標(biāo)識:用 時間戳+隨機(jī)數(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進(jìn)行URL訪問、重定向、頁面刷新等操作相關(guān)原理、操作技巧與注意事項,需要的朋友可以參考下
    2018-12-12
  • JS中appendChild追加子節(jié)點(diǎn)無效的解決方法

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

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

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

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

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

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

    js使用遞歸解析xml

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

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

    這篇文章主要介紹了編寫一個javascript元循環(huán)求值器的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    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ù)的分頁效果,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-11-11
  • JavaScript 事件流、事件處理程序及事件對象總結(jié)

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

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

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

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

最新評論

垣曲县| 乐平市| 寻乌县| 巴彦县| 鹿泉市| 方山县| 滦平县| 句容市| 富裕县| 江城| 浦江县| 沅陵县| 康定县| 仲巴县| 沙田区| 乃东县| 沅江市| 颍上县| 沙湾县| 平舆县| 彩票| 汝州市| 营口市| 北安市| 出国| 澄江县| 昌邑市| 墨脱县| 扎鲁特旗| 凌源市| 桂林市| 深泽县| 舞阳县| 大渡口区| 卢湾区| 留坝县| 涞水县| 阜宁县| 九龙城区| 和林格尔县| 额济纳旗|