这篇文章主要介绍了JavaScript 生成唯一ID的几种方式,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
这篇文章主要介绍了JavaScript 生成唯一ID的几种方式,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
这篇文章主要介绍了JavaScript 生成唯一ID的几种方式,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
|
1
2
|
//我这次运行生成的是:0.5834165740043102 Math.random(); |
|
1
2
|
//现在时间戳是1482645606622Date.now(); |
|
1
2
3
4
5
6
7
8
|
//将1482645606622转换成二进制:10101100100110100100100001001000011011110 (1482645606622).toString(2);//转换成16进制:159349090de MongDB中的ObjectID就是24位16进制数 (1482645606622).toString(16);//最大进制支持转为36进制,使用字符是0-9a-z :ix48wvry (1482645606622).toString(36); |
|
1
2
3
4
5
6
7
8
9
|
/** * 生成一个用不重复的ID */function GenNonDuplicateID(){ return Math.random().toString()}//生成一个类似 0.1283460319177394的IDGenNonDuplicateID() |
|
1
2
3
4
5
6
7
8
9
|
/** * 生成一个用不重复的ID */function GenNonDuplicateID(){ return Math.random().toString(16)}//函数将生成类似 0.c1615913fa915 的IDGenNonDuplicateID() |
|
1
2
3
4
5
6
7
8
9
|
/** * 生成一个用不重复的ID */function GenNonDuplicateID(){ return Math.random().toString(36)}//函数将生成类似 0.hefy7uw6ddzwidkwcmxkzkt9 的IDGenNonDuplicateID() |
|
1
2
3
4
5
6
7
8
9
|
/** * 生成一个用不重复的ID */function GenNonDuplicateID(){ return Math.random().toString(36).substr(2)}//函数将生成类似 8dlv9vabygks2cbg1spds4i 的IDGenNonDuplicateID() |
优势:使用toString的进制转化可以实现更短的字符串表示更多的范围
缺点:用一个随机数作为ID,随着使用次数的累积,必然会出现相同的两个ID
|
1
2
3
4
5
6
7
8
9
10
11
|
/** * 生成一个用不重复的ID */function GenNonDuplicateID(){ let idStr = Date.now().toString(36) idStr += Math.random().toString(36).substr(2) return idStr}//函数将生成类似 ix49sfsnt7514k5wpflyb5l2vtok9y66r 的IDGenNonDuplicateID() |
|
1
2
3
4
5
6
7
8
9
10
11
|
/** * 生成一个用不重复的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前面几位总是相同。
|
1
2
3
4
5
6
7
8
|
/** * 生成一个用不重复的ID */function GenNonDuplicateID(randomLength){ return Number(Math.random().toString().substr(2,randomLength) + Date.now()).toString(36)}//GenNonDuplicateID()将生成 rfmipbs8ag0kgkcogc 类似的IDGenNonDuplicateID() |
只使用时间戳,有个能在同一时间多人访问生成的是一样的。加上随机数可以实现唯一。再加上自定义长度,使UUID更灵活。
万能方案:
|
1
2
3
4
5
6
7
|
/** * 生成一个用不重复的ID * @param { Number } randomLength */function getUuiD(randomLength){ return Number(Math.random().toString().substr(2,randomLength) + Date.now()).toString(36)} |
以上就是JavaScript 生成唯一ID的几种方式的详细内容,更多关于JavaScript 生成唯一ID的资料请关注米米素材网其它相关文章!
原文链接:https://segmentfault.com/a/1190000039225617
发表评论