js 如何生成一个不重复的ID的函数
在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://www.jb51.net/article/101164.htm感兴趣可以去研究一下。
我今天要做的就是做一个不重复ID的生成器
/**
* 生成一个用不重复的ID
*/
function GenNonDuplicateID():String{ }
先看看下面的几个方法
.生成[,)的随机数的Math.random,例如
//我这次运行生成的是:0.5834165740043102
Math.random()
.获取当前时间戳Date.now
//现在时间戳是1482645606622
Date.now()
.将10进制转换为其他进制的字符串 Number.toString
//将1482645606622转换成二进制:10101100100110100100100001001000011011110
().toString()
//转换成16进制:159349090de MongDB中的ObjectID就是24位16进制数
().toString();
//最大进制支持转为36进制,使用字符是0-9a-z :ix48wvry
().toString()
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()
}
//函数将生成类似 0.c1615913fa915 的ID
GenNonDuplicateID()
3.随机数版本36进制版本 v0.0.3
/**
* 生成一个用不重复的ID
*/
function GenNonDuplicateID(){
return Math.random().toString()
}
//函数将生成类似 0.hefy7uw6ddzwidkwcmxkzkt9 的ID
GenNonDuplicateID()
4.随机数版本36进制版本 去掉"0." v0.0.4
/**
* 生成一个用不重复的ID
*/
function GenNonDuplicateID(){
return Math.random().toString().substr()
}
//函数将生成类似 8dlv9vabygks2cbg1spds4i 的ID
GenNonDuplicateID()
然而用一个随机数作为ID,随着使用次数的累积,必然会出现相同的两个ID
5.引入时间戳 的36微进制版本 v0.1.1
/**
* 生成一个用不重复的ID
*/
function GenNonDuplicateID(){
let idStr = Date.now().toString()
idStr += Math.random().toString().substr()
return idStr
}
//函数将生成类似 ix49sfsnt7514k5wpflyb5l2vtok9y66r 的ID
GenNonDuplicateID()
6.引入时间戳 的36微进制版本 加入随机数长度控制 v0.1.2
/**
* 生成一个用不重复的ID
*/
function GenNonDuplicateID(randomLength){
let idStr = Date.now().toString()
idStr += Math.random().toString().substr(,randomLength)
return idStr
}
// GenNonDuplicateID(3) 将生成类似 ix49wl2978w 的ID
GenNonDuplicateID()
这样生成的ID前面几位总是相同,看着不爽,于是再改改
7. 引入时间戳 随机数前置 36进制 加入随机数长度控制 v0.1.3
/**
* 生成一个用不重复的ID
*/
function GenNonDuplicateID(randomLength){
return Number(Math.random().toString().substr(,randomLength) + Date.now()).toString()
}
//GenNonDuplicateID()将生成 rfmipbs8ag0kgkcogc 类似的ID
GenNonDuplicateID()
以上所述是小编给大家介绍的JS如何生成一个不重复的ID的函数,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
转载:http://www.jb51.net/article/101163.htm
js 如何生成一个不重复的ID的函数的更多相关文章
- js生成一个不重复的ID的函数的进化之路
在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://blog.csdn.net/xiamizy/article/details/41521025感兴趣可以去 ...
- JavaScript生成一个不重复的ID
/** * 生成一个用不重复的ID */ function GenNonDuplicateID():String{ } 先看看下面的几个方法 1.生成[0,1)的随机数的Math.random,例如 ...
- jQuery生成一个DIV容器,ID是"rating".
我们需要一些服务器端代码,这个例子中用到了一个PHP文件,读取rating参数然后返回rating总数和平均数.看一下rate.php代码.虽然这些例子也可以不使用AJAX来实现,但显示我们不会那么做 ...
- 【PHP】php生成一个不重复的数字(订单号、会员号)
1.目的:利用php的do .. while 生成一个不重复的字符串或者数组,比如(订单号.会员号) 2.不废话,代码来: $repeat_order = array(); do{ $ordersn ...
- PHP生成一个不重复随机数组的封装方法
<?php /** array unique_rand( int $min, int $max, int $num )* 生成一定数量的不重复随机数* $min 和 $max: 指定随机数的范围 ...
- js随机生成一个数组中的随机字符串以及更新验证码
随机生成m,n范围的值得公式: Math.random()*(n-m)+m: 改正公式:Math.random()*(n+1-m)+m // 生成随机字符串function randomMixed(n ...
- Java生成UUID不重复的id值
在Java中创建UUID在网上查资料才知道在Java中,变成了UUID.创建方式也出奇简单System.out.println( java.util.UUID.randomUUID());
- JS实现生成一个周对应日期数组
/* 获取日期和周 */ getDateWeek() {/* 得到当前日期的时间戳 */ const timestamp = Date.now() // const timestamp = new D ...
- js检查页面上有无重复id的代码分享
用js代码检查一个页面上是否用重复的id. 方法一: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ...
随机推荐
- <转载>一般筛法和快速线性筛法求素数
素数总是一个比较常涉及到的内容,掌握求素数的方法是一项基本功. 基本原则就是题目如果只需要判断少量数字是否为素数,直接枚举因子2 ..N^(0.5) ,看看能否整除N. 如果需要判断的次数较多,则先用 ...
- 【组合数学】cf660E. Different Subsets For All Tuples
比较套路的组合数学题 For a sequence a of n integers between 1 and m, inclusive, denote f(a) as the number of d ...
- django+xadmin在线教育平台(三)
通过留言版功能回顾django基础知识 将对于django目录结构,使用Django快速搭建可以提交的表单页面,models.py , urls.py, views.py. 从数据库中取出数据展示到h ...
- 嵌入式开发 centos7 交叉编译环境准备
1. 安装centos7,启动图像化界面. 参考:https://blog.csdn.net/qq_23014435/article/details/74347925 # systemctl get- ...
- Node 操作MySql数据库
1, 需要安装 MySQL 依赖 => npm i mysql -D 2, 封装一个工具类 mysql-util.js // 引入 mysql 数据库连接依赖 const mysql = re ...
- (转)RubyGems常用命令
什么是RubyGems? RubyGems是一个方便而强大的Ruby程序包管理器,Ruby的第三方插件是用gem方式来管理,非常容易发布和共享,一个简单的命令就可以安装上第三方的扩展库.特点:能远程安 ...
- BFS:胜利大逃亡
解题心得: 1.水题,主要主意好一个点就好. 2.注意x.y.z坐标的选取就好. 题目: Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城 ...
- Android Studio 快捷键(包含自定义)终极版
[F] [F] F2 在错误代码之间切换 F3 往前定位(Shift + F3:往后定位 )有问题 F4\Ctrl+鼠标点击\Ctrl+B 转到定义,查看类继承关系 F5 但不调试进入函数内部. ...
- 不同项目同一浏览器访问 导致Session覆盖 登录后点击就退出登录问题
产生原因:最近开发项目两个项目部署采用同一个tomcat 部署 (当两个tomcat部署时也会产生)由于部署时候两个项目访问域名相同 localhost:8080/ localhost:8 ...
- Oracle数据库迁移--->从Windows到Linux
I did a practice to migrate the oracle database from windows to linux operation system. The followin ...