为了账号安全,请及时绑定邮箱和手机立即绑定

根据前一个值从数组中选择值

根据前一个值从数组中选择值

芜湖不芜 2022-11-11 16:23:22
我有数组有我需要的行大小并像这样随机选取const Numbers = ["8", "4", "6", "2"];const randomNumber = Numbers[Math.floor(Math.random() * Numbers.length)];console.log(randomNumber)这会给我一个来自数组的随机值现在我要做的是选择 3 个数字,它们的总和是 12,然后它重置并重新开始。例子:随机数组选择数字 8 之后数字应该是 4 或数字 2 两次然后重新开始选择号码 4 所以可用号码应该是 4 两次或 2 四次或 4 一次和 2 两次 ...等等所以总和应该是 12 然后再次重置当然,所有这些都将在循环内,但我想知道的是最好的方法。====更新====这是使用的 HTMLrandomRow 应该有值,每 3 行应该是 12for (let i = 0; i < results.length; i++) {    document.getElementById("someID").innerHTML += `                <div class="col-`+randomRow+`"><p>Hello</p>                </div>`}
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

考虑下面的小游戏,它使用你的情况,它从源数组中计算你的 randomNumber 的总和。


它检查总和是否 >= 12。然后让游戏休息!


这有帮助吗?


const Numbers = [8, 4, 6, 2];

var randomNumber = 0;

var sum = 0;


function calcSum() {


  randomNumber = Numbers[Math.floor(Math.random() * Numbers.length)];

  sum = sum + randomNumber;

  if (sum >= 12) {

    document.getElementById('calculatedTotal').innerHTML = "Your score exceeded 12, click 'start game' to play again!";

    sum = 0;

    randomNumber = 0;

  }

  else {

    document.getElementById('calculatedTotal').innerHTML = sum;


  }

}

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

</head>

<body>

    <button id="btn" onclick="calcSum()">Start game!!</button>

    <h2>Your Score: </h2>

    <h3 id="calculatedTotal"></h3>

    <script src="test.js"></script>

</body>

</html>


查看完整回答
反对 回复 2022-11-11
?
青春有我

TA贡献1784条经验 获得超8个赞

每次选择随机数时

  1. 您必须过滤掉不构成 12 的数字。

  2. 从总和中减去选择的数字,然后重复步骤 1 直到总和达到 0

编辑:根据问题更新,假设您使用的是 Bootstrap

document.getElementById("start").addEventListener("click", _ => {

  let sum = +document.getElementById("sum").value;

  let numbers = document.getElementById("numbers").value.split(',').map(x=>+x);

  let picked = [];

  

  while(sum > 0) {

    // filter available `numbers` based on the `sum`

    numbers = numbers.filter(x => x <= sum);

    

    let n = numbers[Math.floor(Math.random() * numbers.length)];

    picked.push(n);


    // subtract `n` from `sum`

    sum -= n;

  }

  

  document.getElementById("row").innerHTML = picked.map(n => `<div class="border border-dark p-3 col-${n}">col-${n}</div>`).join("");

  

});

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" rel="stylesheet"/>

Sum: <input type="text" id="sum" value="12" /> 

Numbers: <input type="text" id="numbers" value="8,6,2,4" /> <br/>

<button type="button" id="start">Start</button>


<div class="container-fluid">

  <div class="row" id="row">

    

  </div>

</div>


查看完整回答
反对 回复 2022-11-11
  • 2 回答
  • 0 关注
  • 87 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信