.jpg)
我想要一个由从集合中随机挑选的字符组成的 5 个字符的字符串。[a-zA-Z0-9]
使用 JavaScript 做到这一点的最佳方法是什么?

网友回答:
//Can change 7 to 2 for longer results.
let r = (Math.random() + 1).toString(36).substring(7);
console.log("random", r);
注意:上述算法具有以下弱点:
Math.random()可能会产生可预测的(“随机外观”但不是真正的随机)输出,具体取决于实现。生成的字符串不适合在需要保证唯一性或不可预测性时。
网友回答:
我认为这将对您有用:
function makeid(length) {
let result = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
let counter = 0;
while (counter < length) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
counter += 1;
}
return result;
}
console.log(makeid(5));

网友回答:
Math.random对这种事情不利
服务器端
使用节点加密模块 –
var crypto = require("crypto");
var id = crypto.randomBytes(20).toString('hex');
// "bb5dc8842ca31d4603d6aa11448d1654"
生成的字符串将是生成的随机字节的两倍;编码为十六进制的每个字节为 2 个字符。20 字节将是 40 个字符的十六进制。
客户端
使用浏览器的加密模块 crypto.getRandomValues –
该方法允许您获得加密强度高的随机值。作为参数给出的数组由随机数填充(在其加密意义上是随机的)。
crypto.getRandomValues()
// dec2hex :: Integer -> String
// i.e. 0-255 -> '00'-'ff'
function dec2hex (dec) {
return dec.toString(16).padStart(2, "0")
}
// generateId :: Integer -> String
function generateId (len) {
var arr = new Uint8Array((len || 40) / 2)
window.crypto.getRandomValues(arr)
return Array.from(arr, dec2hex).join('')
}
console.log(generateId())
// "82defcf324571e70b0521d79cce2bf3fffccd69"
console.log(generateId(20))
// "c1a050a4cd1556948d41"
分步控制台示例 –
> var arr = new Uint8Array(4) # make array of 4 bytes (values 0-255)
> arr
Uint8Array(4) [ 0, 0, 0, 0 ]
> window.crypto
Crypto { subtle: SubtleCrypto }
> window.crypto.getRandomValues()
TypeError: Crypto.getRandomValues requires at least 1 argument, but only 0 were passed
> window.crypto.getRandomValues(arr)
Uint8Array(4) [ 235, 229, 94, 228 ]
对于 IE11 支持,您可以使用 –
(window.crypto || window.msCrypto).getRandomValues(arr)
有关浏览器覆盖范围,请参阅 https://caniuse.com/#feat=getrandomvalues
客户端(旧浏览器)
如果您必须支持旧浏览器,请考虑以下内容 –uuid
const uuid = require("uuid");
const id = uuid.v4();
// "110ec58a-a0f2-4ac4-8393-c866d813b8d1"
模板简介:该模板名称为【使用 JavaScript 在一个由从集合中随机挑选的字符组成的 5 个字符的字符串。[a-zA-Z0-9]】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【JavaScript】栏目查找您需要的精美模板。