亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

JavaScript生成一個(gè)不重復(fù)的ID

 

/**
 * 生成一個(gè)用不重復(fù)的ID
 */
function GenNonDuplicateID():String{
 
}

先看看下面的幾個(gè)方法

1.生成[0,1)的隨機(jī)數(shù)的Math.random,例如

//我這次運(yùn)行生成的是:0.5834165740043102
Math.random()

2.獲取當(dāng)前時(shí)間戳Date.now

//現(xiàn)在時(shí)間戳是1482645606622
Date.now() = 1521009303858

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)

GenNonDuplicateID的自我進(jìn)化

1.隨機(jī)數(shù)版本 v0.0.1

/**
 * 生成一個(gè)用不重復(fù)的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString()
}
//生成一個(gè)類似 0.1283460319177394的ID
GenNonDuplicateID()

2.隨機(jī)數(shù)版本16進(jìn)制版本 v0.0.2

/**
 * 生成一個(gè)用不重復(fù)的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(16)
}
//函數(shù)將生成類似 0.c1615913fa915 的ID
GenNonDuplicateID()

3.隨機(jī)數(shù)版本36進(jìn)制版本 v0.0.3

/**
 * 生成一個(gè)用不重復(fù)的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(36)
}
//函數(shù)將生成類似 0.hefy7uw6ddzwidkwcmxkzkt9 的ID
GenNonDuplicateID()

4.隨機(jī)數(shù)版本36進(jìn)制版本 去掉"0." v0.0.4

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

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

5.引入時(shí)間戳 的36微進(jìn)制版本 v0.1.1

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

6.引入時(shí)間戳 的36微進(jìn)制版本 加入隨機(jī)數(shù)長度控制 v0.1.2

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

這樣生成的ID前面幾位總是相同,看著不爽,于是再改改

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

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

分享到:
標(biāo)簽:JavaScript
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定