1. 定义字母数组,包含26个字母:
js
const letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
2. 创建一个空数组history用于存储已生成的字符串,避免重复:
js
let history = []
3. 生成10位随机字母字符串randomStr,判断是否在history数组中存在:- 若不存在,将randomStr push到history,并返回randomStr
- 若存在,重新生成randomStr,重复判断
js
let randomStr
do {
randomStr = ''
for (let i = 0; i < 10; i++) {
randomStr += Array.from(letters)[Math.floor(Math.random() * letters.length)]
}
} while (history.indexOf(randomStr) !== -1)
4. 将生成的不重复randomStr返回:
js
return randomStr
完整案例 这里是要生成一个随机的字符串 来做用户名
const that = this
const letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M','N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']
let history = []
function randomString() {
let randomStr
do {
randomStr = ''
for (let i = 0; i < 8; i++) {
randomStr += Array.from(letters)[Math.floor(Math.random() * letters.length)]
}
} while (history.indexOf(randomStr) !== -1)
// console.log(randomStr);
// history.push(randomStr)
that.randomName = randomStr
return randomStr
}
randomString()
看看结果吧