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入门·图片对象(无刷新变换图片)\滚动图像
Oct 01 Javascript
js实现图片在未加载完成前显示加载中字样
Sep 03 Javascript
jQuery事件绑定方法学习总结(推荐)
Nov 21 Javascript
JS函数多个参数默认值指定方法分析
Nov 28 Javascript
详解vue 单页应用(spa)前端路由实现原理
Apr 04 Javascript
解决修复npm安装全局模块权限的问题
May 17 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
Aug 04 Javascript
Vue路由守卫之路由独享守卫
Sep 25 Javascript
redux处理异步action解决方案
Mar 22 Javascript
ES6 Generator基本使用方法示例
Jun 06 Javascript
javascript实现点击小图显示大图
Nov 29 Javascript
JavaScript实现下拉列表
Jan 20 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
DOMXML函数笔记
2006/10/09 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
JQUERY操作JSON实例代码
2010/02/09 Javascript
javascript限制文本框只允许输入数字(曾经与现在的方法对比)
2013/01/18 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
JavaScript限定图片显示大小的方法
2015/03/11 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
JavaScript html5 canvas绘制时钟效果(二)
2016/03/27 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
2016/04/26 Javascript
Bootstrap开发实战之第一次接触Bootstrap
2016/06/02 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
nodejs批量下载图片的实现方法
2017/05/19 NodeJs
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
Python数据结构之单链表详解
2017/09/12 Python
Python实现的选择排序算法原理与用法实例分析
2017/11/22 Python
python list删除元素时要注意的坑点分享
2018/04/18 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
Django组件cookie与session的具体使用
2019/06/05 Python
python多线程并发实例及其优化
2019/06/27 Python
面向对象学习之pygame坦克大战
2019/09/11 Python
Django xadmin开启搜索功能的实现
2019/11/15 Python
Django+RestFramework API接口及接口文档并返回json数据操作
2020/07/12 Python
详解Python中list[::-1]的几种用法
2020/11/16 Python
Python3压缩和解压缩实现代码
2021/03/01 Python
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
世界读书日的活动方案
2014/08/20 职场文书
领导班子作风建设剖析材料
2014/10/11 职场文书
2015年加油站工作总结
2015/05/13 职场文书
房屋产权证明书
2015/06/19 职场文书
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript