在JavaScript中生成一个随机的字母数字(大写,小写和数字)字符串来用作可能唯一的标识符的最短方法是什么?
当前回答
更新: 一行程序解决方案,随机20个字符(字母数字小写):
Array.from(Array(20), () => Math.floor(Math.random() * 36).toString(36)).join('');
或者用lodash更短:
_.times(20, () => _.random(35).toString(36)).join('');
其他回答
beans建议的另一种答案变体
(Math.random()*1e32).toString(36)
通过改变乘数1e32,你可以改变随机字符串的长度。
更新: 一行程序解决方案,随机20个字符(字母数字小写):
Array.from(Array(20), () => Math.floor(Math.random() * 36).toString(36)).join('');
或者用lodash更短:
_.times(20, () => _.random(35).toString(36)).join('');
或者根据Jar Jar的建议,这是我在最近的一个项目中使用的方法(以克服长度限制):
var randomString = function (len, bits)
{
bits = bits || 36;
var outStr = "", newStr;
while (outStr.length < len)
{
newStr = Math.random().toString(bits).slice(2);
outStr += newStr.slice(0, Math.min(newStr.length, (len - outStr.length)));
}
return outStr.toUpperCase();
};
Use:
randomString(12, 16); // 12 hexadecimal characters
randomString(200); // 200 alphanumeric characters
使用lodash:
生物多样性功能(length) var chars =“不可能” 瓦尔pwd = _sampleSize (chars,长度正好| | 12)/ lodash v4:用_ sampleSize。 pwd归来加入(“”)。 的 文件写(createRandomString(8)。 <剧本剧本src = " https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js " > < / >
var randomString = function(length) {
var str = '';
var chars ='0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split(
'');
var charsLen = chars.length;
if (!length) {
length = ~~(Math.random() * charsLen);
}
for (var i = 0; i < length; i++) {
str += chars[~~(Math.random() * charsLen)];
}
return str;
};
推荐文章
- 使用jQuery以像素为整数填充或边距值
- 检查是否选择了jQuery选项,如果没有选择默认值
- Next.js React应用中没有定义Window
- 如何重置笑话模拟函数调用计数之前,每次测试
- 如何强制一个功能React组件渲染?
- 在javascript中从平面数组构建树数组
- 将Dropzone.js与其他字段集成到现有的HTML表单中
- 如何在AngularJS中观察路由变化?
- JavaScript DOM删除元素
- 将dd-mm-yyyy字符串转换为日期
- Javascript复选框onChange
- Javascript函数前导bang !语法
- 如何在页面上遍历所有DOM元素?
- 在JS/jQuery中触发按键/按键/按键事件?
- 如何每5秒重新加载页面?