JavaScript 生成唯一ID的幾種方式
//我這次運(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)文章!
相關(guān)文章:
1. jsp文件下載功能實(shí)現(xiàn)代碼2. CSS可以做的幾個(gè)令你嘆為觀止的實(shí)例分享3. XML入門的常見問題(二)4. JSP之表單提交get和post的區(qū)別詳解及實(shí)例5. 讀大數(shù)據(jù)量的XML文件的讀取問題6. ASP實(shí)現(xiàn)加法驗(yàn)證碼7. 低版本IE正常運(yùn)行HTML5+CSS3網(wǎng)站的3種解決方案8. asp知識(shí)整理筆記4(問答模式)9. javascript xml xsl取值及數(shù)據(jù)修改第1/2頁10. 概述IE和SQL2k開發(fā)一個(gè)XML聊天程序
