Javascript随机字母数字生成器,特定格式

时间:2018-12-26 11:25:54

标签: javascript html

我正在尝试使用JavaScript构建随机的字母数字生成器,该生成器将随机生成车辆登记号,因此字符串必须采用特定格式:三个大写字母,三个数字,两个大写字母。前三个字母和数字可以是完全随机的,即ABC123或GDS342。最后两个字母是特定省/州的缩写,例如MP,ZN,GP等。例如:GDS342GP。 单击网页上的按钮时,注册号应随后显示在文本区域中。

有人建议如何实现吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

如果输入65至90之间的数字,

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;
}