将Array1中的随机值添加到Array2中,直到满足条件为止

时间:2019-03-30 04:21:15

标签: javascript

两个数组: 1-userInput包含用户通过hint()输入的字符串。可以包含1到61个字符。 2-letterArray是静态的,包含9个字符。

我创建了一个变量arrayCount来查找userArray的长度。我需要创建一个if / else语句,该语句将在letterArray后面添加一个随机字符到userInput的末尾,直到arrayCount等于61为止,此时我可以继续执行其余的功能(我)。

我知道足够多的javascript知道什么是可能的,但是只有一个模糊的想法如何完成它。到目前为止,我的尝试都是徒劳的。

我已经尝试过.push,但是我很确定我的语法已经过时了。一直在互联网上搜索了两个小时,从w3schools.com上收集了我的大部分答案。

这是我的代码:

function chartFunction() {
    var formInput = prompt("Please enter your phrase", "This eye chart is absolutely fantastic");
    var capsInput = formInput.toUpperCase();
    var userInput = capsInput.replace(/\s+/g, '');
    var letterArray = ["E", "F", "Z", "K", "L", "O", "I", "D"]
    var rand1 = letterArray[Math.floor(Math.random() * letterArray.length)];
    var arrayCount = userInput.length

    if(arrayCount !== 61) {
        userInput.push(letterArray[Math.floor(Math.random() * letterArray.length)]);
    } else {

    document.write("<p>");
    document.write(userInput[0]);
    document.write("<p>");
        document.write(userInput[1],userInput[2]);

1 个答案:

答案 0 :(得分:0)

在您的代码中,您尝试在.push上使用string。根据您的问题描述,我提出了以下解决方案,让我知道我是否缺少某些东西。

function chartFunction() {
  const MAX_CHAR = 61;
  
  let userInput = prompt("Please enter your phrase", "This eye chart is absolutely fantastic");
  
  // replace space and convert to uppercase
  userInput = userInput.replace(/\s+/g, '').toUpperCase();

  if (userInput.length < MAX_CHAR) {
    const letterArray = ["E", "F", "Z", "K", "L", "O", "I", "D"];
    const numberOfCharsToGenerate = MAX_CHAR - userInput.length;
    
    /*
      Array(numberOfCharsToGenerate) => generates an empty array set with the length specified
      
      .fill('') => fill the empty array set with an emtpy string, which makes the actual array with value(here value is '')
      .map() => modifies the array with the random string
      .join() => converts array to string with delimitter ''
    */

    userInput = userInput + Array(numberOfCharsToGenerate).fill('')
      .map(() => letterArray[Math.floor(Math.random() * letterArray.length)]).join('');
  }

  // printing final 'userInput' and its length
  console.log(userInput, userInput.length);
  
  // remaining logic here
}

chartFunction();