嘿,我正在尝试做一个项目,却遇到一个问题。我生成了2个随机数和一个运算符-然后我得到了该方程式的结果并将其存储在数组中。我想将其他3个随机生成的数字添加到数组中(所有数字将显示在按钮上,用户将可以单击一个数字并找出其正确结果)。它仅适用于arry中的第一个数字,这是正确的结果。我没有努力推动其他3个数字。你知道怎么做吗?预先谢谢你!
window.addEventListener('load', function () {
var rnum1 = generateRandomNumber1();
var rnum2 = generateRandomNumber2();
//pass the random numbers to the function
var data = generateRandomOperatorAndCorrectResult(rnum1, rnum2);
//data=["+", [5]]
var operator = data[0];
var allResults = data[results];
var mes = alert(allResults);
document.querySelector("#text").textContent = "Kolik je " + rnum1 + operator + rnum2 + "?";
});
function generateRandomOperatorAndCorrectResult(num1, num2) {
var operators = [{
sign: "+",
method: function (rnum1, rnum2) { return rnum1 + rnum2; }
},
{
sign: "*",
method: function (rnum1, rnum2) { return rnum1 * rnum2; }
},
{
sign: "-",
method: function (rnum1, rnum2) { return rnum1 - rnum2; }
}];
var results = [];
var selectedOperator = Math.floor(Math.random() * operators.length);
var randomOperator = operators[selectedOperator].sign;
var correctResult = (operators[selectedOperator].method(num1, num2)); //pass the numbers to the methods
results.push(correctResult);
var randomResult = generateRandomResults(3);
results.push(randomResult);
//return multiple values
return [randomOperator, [results]];
}
function generateRandomResults(nums) {
for (var i = 0; i < nums; i++) {
((Math.floor(Math.random() * 400) + 1))
}
}
答案 0 :(得分:1)
您的问题与generateRandomResults
函数有关,该函数应返回具有随机数的数组,但此刻仅计算而不将这些结果存储在任何地方。
相反,您将需要创建一个数组,并在生成随机数后将其返回:
function generateRandomResults(nums) {
var randomNumbers = [];
for (var i = 0; i < nums; i++) {
randomNumbers.push((Math.floor(Math.random() * 400) + 1));
}
return randomNumbers;
}
这样,当检索函数的结果(代码中的var randomResult = generateRandomResults(3)
)时,变量将存储三个随机数的数组。这意味着您将拥有to concatenate您的randomNumbers数组,而不是将结果推送到您的results
数组中。所以最后您的代码应该是:
...
results.push(correctResult);
var randomResults = generateRandomResults(3);
results.concat(randomResults);
return [randomOperator, [results]];
...