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 相关文章推荐
基于jquery的兼容各种浏览器的iframe自适应高度的脚本
Aug 13 Javascript
非常棒的10款jQuery 幻灯片插件
Jun 14 Javascript
提高javascript效率 一次判断,而不要次次判断
Mar 30 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
javascript动态创建链接的方法
May 13 Javascript
Bootstrap每天必学之表格
Nov 23 Javascript
JS实现的适合做faq或menu滑动效果示例
Nov 17 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
Mar 22 Javascript
JS简单获取日期相差天数的方法
Apr 24 Javascript
微信小程序组件之srcoll-view的详解
Oct 19 Javascript
js实现京东秒杀倒计时功能
Jan 21 Javascript
谈谈JavaScript令人迷惑的==与+
Aug 31 Javascript
解决微信小程序中的滚动穿透问题
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中Object对象的笔记分享
2011/06/28 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
jQuery-ui中自动完成实现方法
2010/06/10 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
2011/10/17 Javascript
Javascript 读取操作Sql中的Xml字段
2014/10/09 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
Bootstrap模态框使用详解
2017/02/15 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
Vue2.0使用过程常见的一些问题总结学习
2017/04/10 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
React如何解决fetch跨域请求时session失效问题
2018/11/02 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
详解在React项目中安装并使用Less(用法总结)
2019/03/18 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
基于Ionic3实现选项卡切换并重新加载echarts
2020/09/24 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
高一自我鉴定
2013/12/17 职场文书
查摆问题对照检查材料
2014/08/28 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
先进班集体事迹材料
2014/12/25 职场文书
信仰纪录片观后感
2015/06/08 职场文书
赤壁观后感(2)
2015/06/15 职场文书
农村婚庆主持词
2015/06/29 职场文书
优秀学生主要事迹怎么写
2015/11/04 职场文书
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android
js判断两个数组相等的5种方法
2022/05/06 Javascript
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers