成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

JavaScript 生成唯一ID的幾種方式

瀏覽:95日期:2023-10-04 10:04:13
可行方案1.生成[0,1)的隨機(jī)數(shù)的Math.random

//我這次運(yùn)行生成的是:0.5834165740043102 Math.random();2.獲取當(dāng)前時(shí)間戳Date.now

//現(xiàn)在時(shí)間戳是1482645606622Date.now();3.將10進(jìn)制轉(zhuǎn)換為其他進(jìn)制的字符串 Number.toString

//將1482645606622轉(zhuǎn)換成二進(jìn)制:10101100100110100100100001001000011011110 (1482645606622).toString(2);//轉(zhuǎn)換成16進(jìn)制:159349090de MongDB中的ObjectID就是24位16進(jìn)制數(shù) (1482645606622).toString(16);//最大進(jìn)制支持轉(zhuǎn)為36進(jìn)制,使用字符是0-9a-z :ix48wvry (1482645606622).toString(36);改進(jìn)版本一:隨機(jī)數(shù) + toString()1.隨機(jī)數(shù)版本

/** * 生成一個(gè)用不重復(fù)的ID */function GenNonDuplicateID(){ return Math.random().toString()}//生成一個(gè)類似 0.1283460319177394的IDGenNonDuplicateID()2.隨機(jī)數(shù)版本16進(jìn)制版本

/** * 生成一個(gè)用不重復(fù)的ID */function GenNonDuplicateID(){ return Math.random().toString(16)}//函數(shù)將生成類似 0.c1615913fa915 的IDGenNonDuplicateID()3.隨機(jī)數(shù)版本36進(jìn)制版本

/** * 生成一個(gè)用不重復(fù)的ID */function GenNonDuplicateID(){ return Math.random().toString(36)}//函數(shù)將生成類似 0.hefy7uw6ddzwidkwcmxkzkt9 的IDGenNonDuplicateID()4.隨機(jī)數(shù)版本36進(jìn)制版本

/** * 生成一個(gè)用不重復(fù)的ID */function GenNonDuplicateID(){ return Math.random().toString(36).substr(2)}//函數(shù)將生成類似 8dlv9vabygks2cbg1spds4i 的IDGenNonDuplicateID()總結(jié)

優(yōu)勢:使用toString的進(jìn)制轉(zhuǎn)化可以實(shí)現(xiàn)更短的字符串表示更多的范圍

缺點(diǎn):用一個(gè)隨機(jī)數(shù)作為ID,隨著使用次數(shù)的累積,必然會(huì)出現(xiàn)相同的兩個(gè)ID

改進(jìn)版本二1.引入時(shí)間戳 + 36進(jìn)制版本

/** * 生成一個(gè)用不重復(fù)的ID */function GenNonDuplicateID(){ let idStr = Date.now().toString(36) idStr += Math.random().toString(36).substr(2) return idStr}//函數(shù)將生成類似 ix49sfsnt7514k5wpflyb5l2vtok9y66r 的IDGenNonDuplicateID()2.引入時(shí)間戳 + 36進(jìn)制版本 + 隨機(jī)數(shù)長度控制

/** * 生成一個(gè)用不重復(fù)的ID */function GenNonDuplicateID(randomLength){ let idStr = Date.now().toString(36) idStr += Math.random().toString(36).substr(2,randomLength) return idStr}// GenNonDuplicateID(3) 將生成類似 ix49wl2978w 的IDGenNonDuplicateID(3)

但是,這樣生成的ID前面幾位總是相同。

3. 引入時(shí)間戳 + 隨機(jī)數(shù)前置 36進(jìn)制 + 隨機(jī)數(shù)長度控制

/** * 生成一個(gè)用不重復(fù)的ID */function GenNonDuplicateID(randomLength){ return Number(Math.random().toString().substr(2,randomLength) + Date.now()).toString(36)}//GenNonDuplicateID()將生成 rfmipbs8ag0kgkcogc 類似的IDGenNonDuplicateID()總結(jié)

只使用時(shí)間戳,有個(gè)能在同一時(shí)間多人訪問生成的是一樣的。加上隨機(jī)數(shù)可以實(shí)現(xiàn)唯一。再加上自定義長度,使UUID更靈活。

總結(jié)

萬能方案:

/** * 生成一個(gè)用不重復(fù)的ID * @param { Number } randomLength */function getUuiD(randomLength){ return Number(Math.random().toString().substr(2,randomLength) + Date.now()).toString(36)}

以上就是JavaScript 生成唯一ID的幾種方式的詳細(xì)內(nèi)容,更多關(guān)于JavaScript 生成唯一ID的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: JavaScript
相關(guān)文章: