Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何让代码选择随机变量,然后将其从可能的选择列表中删除_Javascript_Arrays_Loops_Splice - Fatal编程技术网

Javascript 如何让代码选择随机变量,然后将其从可能的选择列表中删除

Javascript 如何让代码选择随机变量,然后将其从可能的选择列表中删除,javascript,arrays,loops,splice,Javascript,Arrays,Loops,Splice,我几乎没有进入JS方面的编码,我需要一个小项目,我的工作,所以我道歉提前,如果我没有提供正确的信息 所以我想让这段代码做的是 从可能的选择列表中删除初始选择(是否有效?) 创建一个包含其余可能选择的变量(我想我知道了?) 从列表中随机选择(我想我知道了?) 然后从可能的选择中删除该选择,以便不再选择它。(坏了) 然后循环运行,直到没有更多可能的选择。(我不知所措) 旁注:我也不知道是否有“更干净”的方式来写这篇文章 这就是我迄今为止所尝试的 // Target success chance. v

我几乎没有进入JS方面的编码,我需要一个小项目,我的工作,所以我道歉提前,如果我没有提供正确的信息

所以我想让这段代码做的是

  • 从可能的选择列表中删除初始选择(是否有效?)
  • 创建一个包含其余可能选择的变量(我想我知道了?)
  • 从列表中随机选择(我想我知道了?)
  • 然后从可能的选择中删除该选择,以便不再选择它。(坏了)
  • 然后循环运行,直到没有更多可能的选择。(我不知所措)
  • 旁注:我也不知道是否有“更干净”的方式来写这篇文章

    这就是我迄今为止所尝试的

    // Target success chance.
    var successRate = 0.90;
    // Check if this succeeded.
    if (Math.random() < successRate)  {
        // Determine the thunder element ID used for shock.
        var elementId = 7;
        // Damage formula used for the shock effect.
        var damage = user.mat * 3;
        // Check if a critical hit landed.
        if (target.result().critical) {
          // Apply critical damage.
          damage = this.applyCritical(damage);
        }
        // Get all of the alive members from the opponent's unit.
        var members = this.opponentsUnit().aliveMembers();
        // Remove the main target from the member list.
        members.splice(members.indexOf(target), 1);
        // Play the shock animation on the target.
        target.startAnimation(137);
        // Increase the damage received by the shock damage with the thunder multiplier.
        value += Math.ceil(damage * target.elementRate(elementId));
        // Other members of the opposite team need to be shocked.
        var extraTargets = members;
        // Loop each of these 4 members.
        while (extraTargets--) {
          // Get a random member from the opponent's team.
          var member = members[Math.floor(Math.random() * members.length)];
          // Check if the member exists.
          if (member) {
            // Play the shock animation on the random member.
            member.startAnimation(77);
            // Make the random member take damage with the thunder multiplier.
            member.gainHp(-Math.ceil(damage * member.elementRate(elementId)));
            // Start the damage popup on the random member.
       var text = 'damage';
       var motion = 'Pop High, Wait, Wait, Wait, Stretch';
       var font = 'this.standardFontFace()';
       var size = 'this.standardFontSize()';
       var color = '#BBFFFF';
       member.startDamagePopup().callCustomPopup(text, motion, font, size, color, x, y);
            // Clear the random member's results.
            member.clearResult();
            // Remove the random member from the list of valid targets.
            members.splice(members.indexOf(member), 1);
            // Check if the member is dead.
            if (member.isDead) {
              // If the member is dead, have it collapse.
              member.performCollapse();
            }
          }
        }
      }
    
    //目标成功机会。
    var成功率=0.90;
    //检查此操作是否成功。
    if(Math.random()
    它不会循环通过所有可能的选择,我不知道一旦选择了它,它是否会从选择列表中删除选择,因为由于循环失败,我无法测试第一部分


    感谢您的时间:)

    所有这些方法(例如
    .applycritic()
    )都是在哪里定义的?它们显然是习惯性的,远远不符合标准。它们是否来自
    ?正如我之前提到的,我是一名新手,因此我不确定我是否能正确回答这个问题,但它们来自我使用的游戏创建引擎的结构。您可以使用库采样从集合中随机选择项目,而无需替换它们。我已经用过了。它很容易实现,也不难理解。您的
    while
    循环不会开始运行,因为如果
    成员
    变量是数组,则使用递减运算符
    (extraTargets--)
    将返回
    NaN
    ,这是错误的。这就是为什么循环没有运行的原因。那么我需要做什么或研究什么呢?