如何使用for循环将值添加到JS变量?

时间:2019-01-09 15:53:10

标签: javascript arrays function for-loop variables

我编写了一段代码,生成了12个字符的随机代码。我正在使用Math.random和for循环来执行此操作。在页面上,您可以在输入中输入所需的代码数量。

我想做的是将生成的代码保存在一个数组中,但是我不能这样做,因为for循环和Math.random会按数字创建代码编号并将它们相互放置。如何将整个12位代码添加到数组中(以便以后使用)?

我没有好运尝试过array.push。有效的方法是将数字输出到HTML中的DOM对象,如下所示:

for (i = 0; i < 12; i++) {
var mathRandom = Math.floor(Math.random() * 9); 
var result = document.querySelector("#result");
result.innerHTML += mathRandom;
}

但这不会将12位代码放入变量中。我也尝试过:

var codeNumber = "";
codeNumber += mathRandom;

但是最终导致只有1位数字的变量值。

<input type="number" id="numberOfCodes">
<button onclick="codeGen()">Generate</button>
<div id="result"></div>




<script>

var numberOfCodes = document.querySelector("#numberOfCodes"); 
var arr = [];

function codeGen() { 
x = numberOfCodes.value; 
for (a = 0; a < x; a++) { 
generate(); 
console.log("Generated code");
 }
}


function generate() { 
for (i = 0; i < 12; i++) {
var mathRandom = Math.floor(Math.random() * 9); 
var result = document.querySelector("#result");
result.innerHTML += mathRandom;

 }
}

</script>
</div>
</body>
</html>

我希望将创建的代码(经过一些更改)添加到数组中,以便以后可以使用页面上的代码。每个单独的12位代码都需要在数组中拥有自己的位置。

4 个答案:

答案 0 :(得分:1)

这应该有效:

var result = [], stringResult;

for (i = 0; i < 12; i++) {
   var mathRandom = Math.floor(Math.random() * 9); 
   result.push(mathRandom);
}
stringResult = result.join(''); // concatenates all the elements
console.log(stringResult);

您的代码存在问题,即+符号试图确定操作数的类型并选择正确的操作,连接或加法。将内容添加到innerHtml时,它将数字视为字符串。这就是它起作用的原因。

答案 1 :(得分:0)

您将需要进行重构,以便将生成单个代码的代码封装在单个函数中(此处为generate()),然后使用该函数的输出,如下所示。 (我希望这些评论能启发人。)

var numberOfCodes = document.querySelector("#numberOfCodes");
var resultDiv = document.querySelector("#result");

function codeGen() {
  var nToGenerate = parseInt(numberOfCodes.value);
  for (var a = 0; a < nToGenerate; a++) {
    var code = generate(); // generate a code

    // you could put the code in an array here!

    // for the time being, let's just put it in a new <div>
    var el = document.createElement("div");
    el.innerHTML = code;
    resultDiv.appendChild(el);
  }
}

function generate() {
  var code = "";  // define a local variable to hold the code
  for (i = 0; i < 12; i++) {  // loop 12 times...
    code += Math.floor(Math.random() * 9);  // append the digit...
  }
  return code;  // and return the value of the local variable
}
<input type="number" id="numberOfCodes" value=8>
<button onclick="codeGen()">Generate</button>
<div id="result"></div>

答案 2 :(得分:0)

answer所示,这应该对您有用:

function makeRandCode() {
  var code = "";
  var ints = "1234567890";

  for (var i = 0; i < 12; i++) {
    code += ints.charAt(Math.floor(Math.random() * ints.length));
  }

  return code;
}

console.log(makeRandCode());

答案 3 :(得分:0)

问题在于您要添加数字,而您真正想要的是将它们连接起来,解决方案是将这些数字转换为String,然后将其保存在要存储它们的变量中。一个例子: 2 + 2 = 4'2'+'2'='22' 只需使用.toString(),然后将其保存到变量中即可。