欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

特點

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

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

UUID(通用唯一識別碼)是行業(yè)標(biāo)準,其中 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 標(biāo)準,通用性強(后端、數(shù)據(jù)庫等場景兼容);
  • 隨機數(shù)生成,碰撞概率極低(適合生產(chǎn)環(huán)境);
  • 長度固定(36位),包含連字符,可讀性較好。

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

瀏覽器環(huán)境下可使用 crypto.getRandomValues 生成加密級隨機數(shù),進一步降低碰撞風(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)準UUID格式,隨機數(shù)更安全

特點

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

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

生成更短的唯一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ù)、短鏈接等需要簡短標(biāo)識的場景。

選擇建議:

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

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

總結(jié)

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

相關(guān)文章

  • JavaScript?WebSocket實現(xiàn)實時雙向聊天

    JavaScript?WebSocket實現(xiàn)實時雙向聊天

    這篇文章主要為大家詳細介紹了如何基于JavaScript?WebSocket實現(xiàn)實時雙向聊天,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下
    2024-04-04
  • 手把手教你 CKEDITOR 4 擴展插件制作

    手把手教你 CKEDITOR 4 擴展插件制作

    這篇文章主要介紹了手把手教你 CKEDITOR 4 擴展插件制作,結(jié)合具體實例形式詳細分析了CKEditor4插件制作的步驟與相關(guān)操作注意事項,需要的朋友可以參考下
    2019-06-06
  • js href的用法

    js href的用法

    關(guān)于js window.location.href location.href parent.location.href top.location.href 的用法
    2010-05-05
  • 詳解js中構(gòu)造流程圖的核心技術(shù)JsPlumb(2)

    詳解js中構(gòu)造流程圖的核心技術(shù)JsPlumb(2)

    這篇文章主要介紹了js中構(gòu)造流程圖的核心技術(shù)JsPlumb,jsPlumb是一個強大的JavaScript連線庫,它可以將html中的元素用箭頭、曲線、直線等連接起來,適用于開發(fā)Web上的圖表、建模工具等,需要的朋友可以參考下
    2015-12-12
  • element-ui組件輸入框之放大鏡搜索圖標(biāo)問題

    element-ui組件輸入框之放大鏡搜索圖標(biāo)問題

    這篇文章主要介紹了element-ui組件輸入框之放大鏡(搜索圖標(biāo))的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-11-11
  • HTML5+Canvas實現(xiàn)圖片添加水印功能

    HTML5+Canvas實現(xiàn)圖片添加水印功能

    在現(xiàn)代Web開發(fā)中,圖像處理是一個常見的需求,尤其是為圖片添加水印,下面我們就來看看如何使用HTML5的Canvas技術(shù)為圖片添加水印,需要的可以了解下
    2024-11-11
  • javascript編程異常處理實例小結(jié)

    javascript編程異常處理實例小結(jié)

    這篇文章主要介紹了javascript編程異常處理的方法,結(jié)合實例形式分析總結(jié)了JavaScript編程中異常處理的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • javascript創(chuàng)建對象的3種方法

    javascript創(chuàng)建對象的3種方法

    這篇文章主要介紹了javascript創(chuàng)建對象的3種方法,對比分析js創(chuàng)建對象三種方式的優(yōu)缺點,感興趣的小伙伴們可以參考一下
    2016-11-11
  • JavaScript:Div層拖動效果實例代碼

    JavaScript:Div層拖動效果實例代碼

    這篇文章介紹了JavaScript:Div層拖動效果實例代碼,有需要的朋友可以參考一下
    2013-08-08
  • JavaScript實現(xiàn)拖拽和縮放效果

    JavaScript實現(xiàn)拖拽和縮放效果

    這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)拖拽和縮放效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08

最新評論