JS生成1000个数字加字母的不重复的随机字符串
周五,快下班了,正收拾东西准备走人,项目经理突然让我给他做个Excel,1000个数字加字母组合的密码,不重复,下班前给。
我直接懵了,Excel不会,估计是要写个什么命令才能生成出来,于是想着有没有什么软件可以生成,找了一会儿还是放弃了。等着下班回家呢,自己来吧。
废话少说,上代码。
<div id="keys"></div>
<script>
// 生成十位字母加数字随机数
var arr = [];
for (var i=0;i<1000;i++) {
var n = Math.random().toString(36).substr(2,10);
arr.push(n);
}
// 去重
var ukeys = [];
for (var i = 0; i < arr.length; i++) {
if (ukeys.indexOf(arr[i]) == -1) {
console.log(arr[i])
ukeys.push(arr[i]);
}
}
// 数组处理,便于在Html文档中显示
var keys = '';
for (var i=0;i<ukeys.length;i++) {
ukeys[i] += '<br>'
keys += ukeys[i]
}
$('#keys').html(keys);
console.log('去重后的密码个数:' + ukeys.length);
</script>

Math.random() 输出0到1(包括0,不包含1)的随机数。
toString(16) 将随机数转换为16进制的字符串。
substring(2, 10) 截取字符串,因为随机数大于等于0小于1,前两位是 " 0. " , substring(2, 10)从第三位开始截取十位。

去重。检查数组中的每一个元素,如果当前元素在新的数组中已经存在则忽略,否则加入倒新数组中。最后得到的新数组就是所要的不重复的密码。
至此已经得到了1000个数字加字母组合的密码,而且不重复,但是由于要拷贝到excel中,如果直接在控制台中打印然后复制,结果是这样的:
randomCode.html:23 ud6202zt55
randomCode.html:23 oqu89g76tu
randomCode.html:23 m5cibg4jv1
因此需要对结果进行格式化以方便复制,如下:

即在每一项元素后面添加一个换行标签<br>, 然后在页面中显示出来,效果如下:

然后全选粘贴到Excel就ok啦。
小结:生成密钥数组主要用到了JS的 Math.random() 、toString(36)、substr(start, n)方法,关键在于数值转换成16进制字符串的过程。
数组去重主要用到了 indexOf() 方法。数组去重是个十分经典的问题,方法很多,个人认为使用indexOf()逐项排除是最简单的,其他的方法有时间也需要研究一下。
整个过程的代码还是十分简单和基础的,照这样的方法,只要系统承受得了,生成十万个一百万个数十位不重复的密钥也是没有任何问题的。
JS生成1000个数字加字母的不重复的随机字符串的更多相关文章
- java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串
java,url长链接生成短链接,短链接生成器,自定义字符串,对字符串md5混合KEY加密,根据短链接获得key值,不重复的随机数,不重复的随机字符串 package com.zdz.test; im ...
- js正则表达式只能是数字、字母或下划线
//只能是数字.字母或下划线 function isValid(str) { var reg = /^\w+$/g; return reg.test(str); }
- PHP 验证5-20位数字加字母的正则(数字和字母缺一不可)!!!
$pattern = '/^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{5,20}$/'; if(!preg_match($pattern,$username)){ re ...
- php随机生成数字加字母的字符串
function getRandomString($len, $chars=null) { if (is_null($chars)) { $chars = "ABCDEFGHIJKLMNOP ...
- C++ 随机数字以及随机数字加字母生成
#include <time.h>#include <sys/timeb.h>void MainWindow::slot_clicked(){ QString strRand; ...
- js 正则表达式:密码必须由6-12位数字加字母组成
^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,12}$
- jq随机生成数字加字母的字符串
html代码: <dl class="row"> <dt class="tit"> <label for="title& ...
- 【vue】canvas验证码组件--数字/数字加字母
基于canvas的数字/数字+字符验证码 SIdentify.vue 组件 <!-- 基于canvas的数字/数字+字符验证码 --> <!-- 调用格式 <s-ident ...
- python识别验证码——一般的数字加字母验证码识别
1.验证码的识别是有针对性的,不同的系统.应用的验证码区别有大有小,只要处理好图片,利用好pytesseract,一般的验证码都可以识别 2.我在识别验证码的路上走了很多弯路,重点应该放在怎么把图片处 ...
随机推荐
- java-7311练习(下)
java练习,仅供参考! 欢迎同学们交流讨论. JDK 1.8 API帮助文档 JDK 1.6 API中文文档 第一次小组作业:模拟双色球彩票 第一次小组作业(一) 控制台版 游戏规则: • 双色球为 ...
- [UCSD白板题] Sorting: 3-Way Partition
Problem Introduction The goal in this problem is to redesign a given implementation of the randomize ...
- Java/Android 二进制数据与String互转
将经过加密的二进制数据保存到本地的方法 byte[] src = new byte[] { 122,-69, -17, 92, -76, 52, -21, -87, -10, 105, 76, -75 ...
- XCode一直显示"scanning for working copies"的解决办法
一个SVN上的项目,在本地重新CheckOut打开后,一直提示"scanning for working copies"且不能使用SVN的更新.提交等功能,当时想着晾它一晚上,看能 ...
- JQuery的开发与使用心得
关于jQuery的 入门使用jQuery可以很容易或具有挑战性的,这取决于你如何使用JavaScript,HTML,CSS进行开发和编程. 要知道一件重要的事情是,jQuery是只是一个JavaScr ...
- RHEL6.5中完成播放音乐的“大业”
参考文章:http://ylw6006.blog.51cto.com/470441/589964 感谢:ylw6006@51CTO 首先,费了不少劲去找到三个文件(还要对应版本el6.i686或el6 ...
- day14---html基础
本节内容: 一.HTML 二.CSS 三.JS HTML 1.一套规则,浏览器认识的规则. 2.开发者: 学习Html规则 开发后台程序: - 写Html文件(充当模板的作用) ****** - 数据 ...
- day12---python mysql pymsql sqlalchemy ORM
RDBMS 术语 在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语: 数据库: 数据库是一些关联表的集合.. 数据表: 表是数据的矩阵.在一个数据库中的表看起来像一个简单的电子表 ...
- Java学习笔记(六)
期末课程选题:QQ登录界面.好友列表界面及聊天框界面. 功能实现:简单的功能可实现,如:点击登录进入好友列表界面:点击好友可进入聊天框:可实现简单聊天功能:聊天可输入及输出,可选择私聊或群聊,可获得当 ...
- 字符串匹配的Boyer-Moore算法
作者: 阮一峰 http://www.ruanyifeng.com/blog/2013/05/boyer-moore_string_search_algorithm.html 上一篇文章,我介绍 ...