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生成一个不重复的ID的更多相关文章
- js 如何生成一个不重复的ID的函数
在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://www.jb51.net/article/101164.htm感兴趣可以去研究一下. 我今天要做的就是做 ...
- js生成一个不重复的ID的函数的进化之路
在MongoDB中的ObjectID,可以理解为是一个不会重复的ID,这里有个链接http://blog.csdn.net/xiamizy/article/details/41521025感兴趣可以去 ...
- 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: 指定随机数的范围 ...
- Java生成UUID不重复的id值
在Java中创建UUID在网上查资料才知道在Java中,变成了UUID.创建方式也出奇简单System.out.println( java.util.UUID.randomUUID());
- js对Date对象的操作的问题(生成一个倒数7天的数组)
今天在论坛上看到这样一个问题如下: 问题描述: 使用JavaScript生成一个倒数7天的数组.比如今天是10月1号,生成的数组是["9月25号","9月26号" ...
- PHP下生成非重复的id
PHP在多进程运行的情况下,如果不采用内存锁或者文件锁,基本没办法能解决生成唯一Id的问题.试过了静态变量.单例模式等等.查询到php里的uniqid()函数,最后还是找到了一个折中方式,虽然还是有可 ...
- [转载][记录]javascript生成不重复的随机数
参考链接:javascript生成不重复的随机数 项目播放视频,是无序的,有上下两个按钮,所以需要生成1,8不重复的随机数数组,如: ,,,,,,, 然后再split一次,就是数组了. 拿来主义了
随机推荐
- js对象常用属性和方法:复制一个对象,获取一个对象的所有key和所有value的方法
记录对象的一些实用使用方法及属性 // Object.assign() 多个对象合并 key相同则后面的覆盖前面的 const target = { a: 1, b: 2 }; const sourc ...
- SQL报错注入
0x00:前言 sqli-libs第11关的报错注入,之前没有具体学习了解过,所以单独学习一下. 0x01:例子 uname=1&passwd=1' union select count(*) ...
- Bugku 代码审计
0x01.extract变量覆盖 代码: <?php$flag='xxx';extract($_GET);if(isset($shiyan)){$content=trim(file_get_co ...
- lower_case_table_names和数据库在Linux和windows平台之间的相互迁移问题
MySQL关于 lower_case_table_names 的文档 https://dev.mysql.com/doc/refman/5.7/en/identifier-case-sensitivi ...
- ubuntu 16.04 创建NFS
快速设置 安装NFS服务 sudo apt-get install nfs-kernel-server 编辑/etc/exports文件 vim /etc/exports /opt/nfs *(rw, ...
- Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)
备份类型: 热备份:读写不受影响 温备份:仅可执行读备份 冷备份:离线备份,读写均不能执行,关机备份 物理备份和逻辑备份 物理备份:复制数据文件,速度快. 逻辑备份:将数据导出之文本文件中,必要时候, ...
- 目标检测论文解读13——FPN
引言 对于小目标通常需要用到多尺度检测,作者提出的FPN是一种快速且效果好的多尺度检测方法. 方法 a,b,c是之前的方法,其中a,c用到了多尺度检测的思想,但他们都存在明显的缺点. a方法:把每图片 ...
- php观察者模式(observer pattern)
... <?php /* The observer pattern implements a one-too-many dependency between objects. The objec ...
- linux 文件上传 linux服务器
1.Linux下目录复制:本机->远程服务器 1 2 scp -r /home/shaoxiaohu/test1 zhidao@192.168.0.1:/home/test2 #test1 ...
- python3字符串的方法及注释/ 字符串格式化符号含义及格式化符号含义
capitalize() 把字符串的第一个字符改为大写 casefold() 把整个字符串的所有字符改为小写 center(width) 将字符串居中,并使用空格填充至长度wid ...