我正在尝试使用JavaScript构建随机的字母数字生成器,该生成器将随机生成车辆登记号,因此字符串必须采用特定格式:三个大写字母,三个数字,两个大写字母。前三个字母和数字可以是完全随机的,即ABC123或GDS342。最后两个字母是特定省/州的缩写,例如MP,ZN,GP等。例如:GDS342GP。 单击网页上的按钮时,注册号应随后显示在文本区域中。
有人建议如何实现吗?
谢谢。
答案 0 :(得分:1)
String.fromCharCode()
将为您提供一个大写字母。因此,如果您使用此功能3次,并且在65-90之间(包括65-90)之间有3个随机数,则可以生成三个随机大写字母:
const getRandomLetters = function(count) {
let acc = ''; // the resulting string (to return once results appended)
for(let i = 0; i < count; i++) { // generate amount
const randomCharCode = Math.floor(Math.random() * (91 - 65)) + 65;
acc += String.fromCharCode(randomCharCode);
}
return acc;
}
const characters = getRandomLetters(3);
console.log(characters);
要生成三个随机数,您可以用相同的方法执行很多操作。为此,您可以使用Math.floor(Math.random() * 10)
生成一个0到9之间的随机整数。可以使用更简单的方法,但是该方法将允许您获取诸如000
或{{1} }不在数百中,但仍认为是三个数字:
050
由于您尚未指定如何选择状态,因此我将为您提供一种随机选择状态的方法。
您可以将所有状态存储在一个数组中:
const getRandomNumbers = function(count) {
let acc = '';
for(let i = 0; i < count; i++) {
acc += ~~(Math.random() * 10); // Note: ~~ is the same as Math.floor (just a little faster)
}
return acc;
}
const numbers = getRandomNumbers(3);
console.log(numbers);
,然后选择一个零(介于(包括))状态数组长度减去1之间的随机数,以从该数组获取随机索引。然后,您可以使用以下数字作为索引来访问随机状态:
const states = ['MP', 'ZN', 'GP'];
现在,您可以结合所有这些想法来生成您的随机字符串。您还可以在const states = ['MP', 'ZN', 'GP'];
const randomIndex = ~~(Math.random() * states.length); // random int from: [0, 3) -> gives ints: 0, 1, 2
const state = states[randomIndex];
console.log(state);
元素中添加一个onclick
方法,该方法将在按下时调用一个函数。另外,您还可以在<button>
中添加id
,以便您的javascript访问它并将其<textarea>
更改为生成的字符串:
value
const getRandomLetters = function(count) {
let acc = ''; // the resulting string (to return once results appended)
for(let i = 0; i < count; i++) { // generate amount
let randomCharCode = Math.floor(Math.random() * (91 - 65)) + 65;
acc += String.fromCharCode(randomCharCode);
}
return acc;
}
const getRandomNumbers = function(count) {
let acc = '';
for(let i = 0; i < count; i++) {
acc += ~~(Math.random() * 10); // Note: ~~ is the same as Math.floor (just a little faster)
}
return acc;
}
const generatePlate = function() {
const states = ['MP', 'ZN', 'GP'];
const randomIndex = ~~(Math.random() * states.length); // random int from: [0, 3) -> gives ints: 0, 1, 2
const characters = getRandomLetters(3);
const numbers = getRandomNumbers(3);
const state = states[randomIndex];
const resultPlate = characters + numbers + state;
document.getElementById('output').value = resultPlate;
}