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 相关文章推荐
页面只能打开一次Cooike如何实现
Dec 04 Javascript
Javascript实现视频轮播在pc端与移动端均可
Sep 29 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
js获取微信版本号的方法
May 12 Javascript
纯js模拟div层弹性运动的方法
Jul 27 Javascript
js仿微博实现统计字符和本地存储功能
Dec 22 Javascript
利用JQUERY实现多个AJAX请求等待的实例
Dec 14 jQuery
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
JavaScript Array对象使用方法解析
Sep 24 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 Javascript
微信小程序 button样式设置为图片的方法
Jun 19 Javascript
vue中封装axios并实现api接口的统一管理
Dec 25 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
Apache设置虚拟WEB
2006/10/09 PHP
收集的DedeCMS一些使用经验
2007/03/17 PHP
php SQL Injection with MySQL
2011/02/27 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
thinkPHP中_initialize方法实例分析
2016/12/05 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
AeroWindow 基于JQuery的弹出窗口插件
2011/06/27 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
jQuery实现 RadioButton做必选校验功能
2017/06/15 jQuery
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
JavaScript实现横版菜单栏
2020/03/17 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
python实现文件快照加密保护的方法
2015/06/30 Python
Python实现将doc转化pdf格式文档的方法
2018/01/19 Python
python/sympy求解矩阵方程的方法
2018/11/08 Python
Python3实现定时任务的四种方式
2019/06/03 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
简单html5代码获取地理位置
2014/03/31 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
酒店管理专业毕业生推荐信
2013/11/10 职场文书
实习评语
2013/12/16 职场文书
毕业设计计划书
2014/01/09 职场文书
《莫泊桑拜师》教学反思
2014/04/23 职场文书
小学生安全演讲稿
2014/04/25 职场文书
英文导游词
2015/02/13 职场文书
2019最新版股权转让及委托持股协议书范本
2019/08/07 职场文书
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis