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 相关文章推荐
php和js对数据库图片进行等比缩放示例
Apr 28 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
JavaScript中的函数模式详解
Feb 11 Javascript
深入浅析JavaScript中prototype和proto的关系
Nov 15 Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 Javascript
简单谈谈gulp-changed插件
Feb 21 Javascript
js弹性势能动画之抛物线运动实例详解
Jul 27 Javascript
解析Vue 2.5的Diff算法
Nov 28 Javascript
JS解析后台返回的JSON格式数据实例
Aug 06 Javascript
JS检索下拉列表框中被选项目的索引号(selectedIndex)
Dec 17 Javascript
解决Vue router-link绑定事件不生效的问题
Jul 22 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 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
使用 MySQL Date/Time 类型
2008/03/26 PHP
PHP取二进制文件头快速判断文件类型的实现代码
2013/08/05 PHP
Jquery多选框互相内容交换的实例代码
2013/07/04 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
javascript实现计算指定范围内的质数示例
2018/12/29 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
浅析微信小程序modal弹窗关闭默认会执行cancel问题
2019/10/14 Javascript
[03:28]2014DOTA2国际邀请赛 走近EG战队天才中单Arteezy
2014/07/12 DOTA
python 算法 排序实现快速排序
2012/06/05 Python
python使用pandas处理excel文件转为csv文件的方法示例
2019/07/18 Python
python 中xpath爬虫实例详解
2019/08/26 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
python离线安装外部依赖包的实现
2020/02/13 Python
python实现FTP循环上传文件
2020/03/20 Python
Django 允许局域网中的机器访问你的主机操作
2020/05/13 Python
python 实现全球IP归属地查询工具
2020/12/18 Python
html5 横向滑动导航栏的方法示例
2020/05/08 HTML / CSS
采用冷却技术的超自然舒适度:GhostBed床垫
2018/09/18 全球购物
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
自考生毕业自我鉴定
2013/10/10 职场文书
应届毕业生应聘自荐信
2013/12/07 职场文书
装修致歉信
2014/01/15 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
医院义诊活动总结
2014/07/04 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
2014最新实习证明模板
2014/10/02 职场文书
师德师风整改措施
2014/10/24 职场文书
2015元旦家电促销活动策划方案
2014/12/09 职场文书
运动会加油稿50字
2015/07/21 职场文书
初中语文教师研修日志
2015/11/13 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript