JavaScript生成一个不重复的ID的方法示例


Posted in Javascript onSeptember 16, 2019

本文介绍了JavaScript生成一个不重复的ID的方法示例,分享给大家,具体如下:

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID():String{
 
}

先看看下面的几个方法

1.生成[0,1)的随机数的Math.random,例如

//我这次运行生成的是:0.5834165740043102
Math.random()

2.获取当前时间戳Date.now

//现在时间戳是1482645606622
Date.now() = 1521009303858

3.将10进制转换为其他进制的字符串 Number.toString

//将1482645606622转换成二进制:10101100100110100100100001001000011011110
(1482645606622).toString(2)
//转换成16进制:159349090de MongDB中的ObjectID就是24位16进制数
(1482645606622).toString(16);
//最大进制支持转为36进制,使用字符是0-9a-z :ix48wvry
(1482645606622).toString(36)

GenNonDuplicateID的自我进化

1.随机数版本 v0.0.1

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString()
}

//生成一个类似 0.1283460319177394的ID
GenNonDuplicateID()

2.随机数版本16进制版本 v0.0.2

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(16)
}

//函数将生成类似 0.c1615913fa915 的ID
GenNonDuplicateID()

3.随机数版本36进制版本 v0.0.3

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(36)
}

//函数将生成类似 0.hefy7uw6ddzwidkwcmxkzkt9 的ID
GenNonDuplicateID()

4.随机数版本36进制版本 去掉"0." v0.0.4

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 return Math.random().toString(36).substr(3)
}

//函数将生成类似 8dlv9vabygks2cbg1spds4i 的ID
GenNonDuplicateID()

然而用一个随机数作为ID,随着使用次数的累积,必然会出现相同的两个ID

5.引入时间戳 的36微进制版本 v0.1.1

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(){
 let idStr = Date.now().toString(36)
 idStr += Math.random().toString(36).substr(3)
 return idStr
}

//函数将生成类似 ix49sfsnt7514k5wpflyb5l2vtok9y66r 的ID
GenNonDuplicateID()

6.引入时间戳 的36微进制版本 加入随机数长度控制 v0.1.2

/**
 * 生成一个用不重复的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. 引入时间戳 随机数前置 36进制 加入随机数长度控制 v0.1.3

/**
 * 生成一个用不重复的ID
 */
function GenNonDuplicateID(randomLength){
 return Number(Math.random().toString().substr(3,randomLength) + Date.now()).toString(36)
}
//GenNonDuplicateID()将生成 rfmipbs8ag0kgkcogc 类似的ID
GenNonDuplicateID()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript 变量命名规则
Sep 23 Javascript
javascript实现的元素拖动函数宿主为浏览器
Jul 21 Javascript
jquery实现上下左右滑动的方法
Feb 09 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
JavaScript如何实现图片懒加载(lazyload) 提高用户体验(增强版)
Nov 30 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
Feb 13 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
使用vue制作探探滑动堆叠组件的实例代码
Mar 07 Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
Jul 19 Javascript
vue组件表单数据回显验证及提交的实例代码
Aug 30 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
Aug 07 Javascript
Vue监视数据的原理详解
Feb 24 Vue.js
解决微信小程序中的滚动穿透问题
Sep 16 #Javascript
微信小程序左滑删除实现代码实例
Sep 16 #Javascript
微信小程序左右滚动公告栏效果代码实例
Sep 16 #Javascript
layui 实现表单和文件上传一起传到后台的例子
Sep 16 #Javascript
Vue 自定义指令实现一键 Copy功能
Sep 16 #Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
Sep 16 #Javascript
layui使用templet格式化表格数据的方法
Sep 16 #Javascript
You might like
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
php文件包含目录配置open_basedir的使用与性能详解
2017/04/03 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
JS防止用户多次提交的简单代码
2013/08/01 Javascript
Javascript之this关键字深入解析
2013/11/12 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
jquery获取文档高度和窗口高度汇总
2016/01/25 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
JS冒泡事件与事件捕获实例详解
2016/11/25 Javascript
bootstrap table动态加载数据示例代码
2017/03/25 Javascript
js实现的格式化数字和金额功能简单示例
2019/07/30 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
nuxt静态部署打包相对路径操作
2020/11/06 Javascript
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
python正则表达式面试题解答
2020/04/28 Python
Python安装pycurl失败的解决方法
2018/10/15 Python
Python面向对象之类和对象实例详解
2018/12/10 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
django 自定义过滤器的实现
2019/02/26 Python
python写程序统计词频的方法
2019/07/29 Python
Python 求数组局部最大值的实例
2019/11/26 Python
python随机生成库faker库api实例详解
2019/11/28 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
tensorboard实现同时显示训练曲线和测试曲线
2020/01/21 Python
如何基于python对接钉钉并获取access_token
2020/04/21 Python
Clarks英国官方网站:全球领军鞋履品牌
2016/11/26 全球购物
Giuseppe Zanotti美国官方网站:将鞋履视为高级时装般精心制作
2018/02/06 全球购物
有个性的自我评价范文
2013/11/15 职场文书
文明村创建实施方案
2014/03/27 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
食品仓管员岗位职责
2015/04/01 职场文书