亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript 生成唯一ID的幾種方式

 更新時間:2021年02月19日 09:13:47   作者:specialCoder  
這篇文章主要介紹了JavaScript 生成唯一ID的幾種方式,幫助大家更好的理解和使用JavaScript,感興趣的朋友可以了解下

可行方案

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

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

2.獲取當前時間戳Date.now

//現(xiàn)在時間戳是1482645606622
Date.now();

3.將10進制轉(zhuǎn)換為其他進制的字符串 Number.toString

//將1482645606622轉(zhuǎn)換成二進制:10101100100110100100100001001000011011110 
(1482645606622).toString(2);

//轉(zhuǎn)換成16進制:159349090de MongDB中的ObjectID就是24位16進制數(shù) 
(1482645606622).toString(16);

//最大進制支持轉(zhuǎn)為36進制,使用字符是0-9a-z :ix48wvry 
(1482645606622).toString(36);

改進版本一:隨機數(shù)  + toString()

1.隨機數(shù)版本 

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

//生成一個類似 0.1283460319177394的ID
GenNonDuplicateID()

2.隨機數(shù)版本16進制版本

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

//函數(shù)將生成類似 0.c1615913fa915 的ID
GenNonDuplicateID()

3.隨機數(shù)版本36進制版本 

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

//函數(shù)將生成類似 0.hefy7uw6ddzwidkwcmxkzkt9 的ID
GenNonDuplicateID()

4.隨機數(shù)版本36進制版本

/**
 * 生成一個用不重復(fù)的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(36).substr(2)
}

//函數(shù)將生成類似 8dlv9vabygks2cbg1spds4i 的ID
GenNonDuplicateID()

總結(jié)

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

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

改進版本二

1.引入時間戳 + 36進制版本 

/**
 * 生成一個用不重復(fù)的ID
 */
function GenNonDuplicateID(){
 let idStr = Date.now().toString(36)
 idStr += Math.random().toString(36).substr(2)
 return idStr
}

//函數(shù)將生成類似 ix49sfsnt7514k5wpflyb5l2vtok9y66r 的ID
GenNonDuplicateID()

2.引入時間戳 + 36進制版本 + 隨機數(shù)長度控制

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

// GenNonDuplicateID(3) 將生成類似 ix49wl2978w 的ID
GenNonDuplicateID(3)

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

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

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

總結(jié)

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

總結(jié)

萬能方案:

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

以上就是JavaScript 生成唯一ID的幾種方式的詳細內(nèi)容,更多關(guān)于JavaScript 生成唯一ID的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 關(guān)于微信小程序自定義tabbar問題詳析

    關(guān)于微信小程序自定義tabbar問題詳析

    微信小程序是一種全新的連接用戶與服務(wù)的方式,它可以在微信內(nèi)被便捷地獲取和傳播,同時具有出色的使用體驗,下面這篇文章主要給大家介紹了關(guān)于微信小程序自定義tabbar問題的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Javascript學(xué)習(xí)筆記 delete運算符

    Javascript學(xué)習(xí)筆記 delete運算符

    關(guān)于javascript的delete運算符,MDN里有相關(guān)文檔。以下是我的學(xué)習(xí)筆記,更多是要關(guān)注特殊情況的使用和注意點。
    2011-09-09
  • 使用JS 清空File控件的路徑值

    使用JS 清空File控件的路徑值

    今天Test時發(fā)現(xiàn)一個小問題,上傳控件完成后,路徑還保留,為了清除,需要想一些辦法
    2013-07-07
  • Ajax,UTF-8還是GB2312 eval 還是execScript

    Ajax,UTF-8還是GB2312 eval 還是execScript

    討厭的東西。 關(guān)于Ajax獲取HTML內(nèi)容編碼,與JavaScript載入腳本的動態(tài)執(zhí)行問題。
    2008-11-11
  • es6學(xué)習(xí)筆記之Async函數(shù)基本教程

    es6學(xué)習(xí)筆記之Async函數(shù)基本教程

    這篇文章主要給大家介紹了關(guān)于es6中Async函數(shù)的基本教程,文中介紹的非常詳細,對大家學(xué)習(xí)async函數(shù)具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-05-05
  • js、css、img等瀏覽器緩存問題的2種解決方案

    js、css、img等瀏覽器緩存問題的2種解決方案

    瀏覽器緩存的意義在于提高了執(zhí)行效率,但是也隨之而來帶來了一些問題,導(dǎo)致服務(wù)端修改了js、css,客戶端不能更新,下面有幾個不錯的方法可以解決此問題,感興趣的朋友可以參考下
    2013-10-10
  • js取值中form.all和不加all的區(qū)別介紹

    js取值中form.all和不加all的區(qū)別介紹

    在js里取值,可以用form.xx.value,也可以用form.all.xx.value,那么js取值中form.all和不加all有什么區(qū)別呢?下面就為大家詳細介紹下
    2014-01-01
  • d3.js 地鐵軌道交通項目實戰(zhàn)

    d3.js 地鐵軌道交通項目實戰(zhàn)

    這篇文章主要介紹了d3.js 地鐵軌道交通項目實戰(zhàn),本文通過實例代碼項目截圖給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • JavaScript深拷貝的一些踩坑記錄

    JavaScript深拷貝的一些踩坑記錄

    這篇文章主要給大家介紹了關(guān)于JavaScript深拷貝的一些踩坑記錄,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • js隱式全局變量造成的bug示例代碼

    js隱式全局變量造成的bug示例代碼

    一段js代碼遇到一個bug,由于中間的隱式全局變量造成的,通過谷歌瀏覽器的js調(diào)試器才找到問題所在,下面將代碼與大家分享下
    2014-04-04

最新評論