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写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
Feb 09 Javascript
javascript下function声明一些小结
Dec 28 Javascript
jquery表单验证使用插件formValidator
Nov 10 Javascript
Extjs Label的 fieldLabel和html属性值对齐的方法
Jun 15 Javascript
jQuery添加删除DOM元素方法详解
Jan 18 Javascript
在javascript中创建对象的各种模式解析
May 16 Javascript
Ionic如何创建APP项目
Jun 03 Javascript
轻松实现jQuery添加删除按钮Click事件
Mar 13 Javascript
AngularJS 验证码60秒倒计时功能的实现
Jun 05 Javascript
vue cli 全面解析
Feb 28 Javascript
命令行批量截图Node脚本示例代码
Jan 25 Javascript
手把手教你从零开始react+antd搭建项目
Jun 03 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
Juqery Html(),append()等方法的Bug解决方法
2010/12/13 Javascript
关于JavaScript与HTML的交互事件
2013/04/12 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
2014/06/27 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
JavaScript实现网站访问次数统计代码
2015/08/12 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
2016/11/25 Javascript
js闭包用法实例详解
2016/12/13 Javascript
React中常见的动画实现的几种方式
2018/01/10 Javascript
手动用webpack搭建第一个ReactApp的示例
2018/04/11 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
jquery+css实现Tab栏切换的代码实例
2019/05/14 jQuery
Vue数字输入框组件的使用方法
2019/10/19 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
python获取当前时间对应unix时间戳的方法
2015/05/15 Python
python链接Oracle数据库的方法
2015/06/28 Python
Python的Twisted框架上手前所必须了解的异步编程思想
2016/05/25 Python
spark: RDD与DataFrame之间的相互转换方法
2018/06/07 Python
python实现图片插入文字
2019/11/26 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
如何在mac版pycharm选择python版本
2020/07/21 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
2020/09/21 Python
Python可视化工具如何实现动态图表
2020/10/23 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
使用phonegap创建联系人的实现方法
2017/03/30 HTML / CSS
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
英国发展最快的在线超市之一:Click Marketplace
2021/02/15 全球购物
会议开场欢迎词
2014/01/15 职场文书
新闻传媒系求职信范文
2014/04/19 职场文书
2015年检验科工作总结
2015/04/27 职场文书
二十年同学聚会致辞
2015/07/28 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript