如何从随机选择中排除数组元素

时间:2019-07-16 14:25:40

标签: javascript html arrays

我想知道如何从数组中随机选择一个数字。该编号必须事先从html格式的列表中选择,例如以下所示。例如,如果我选择数字“ 05”,则希望将其从随机选择过程中排除。 我还附加了随机选择的js代码。 谢谢。

           <SELECT ID="elegirNombre" NAME="elección">
                   <OPTION ID="01" VALUE="01">01</OPTION>
                   <OPTION ID="02" VALUE="02">02</OPTION>
                   <OPTION ID="03" VALUE="03">03</OPTION>
                   <OPTION ID="04" VALUE="04">04</OPTION>
                   <OPTION ID="05" VALUE="05">05</OPTION>
                   <OPTION ID="06" VALUE="06">06</OPTION>
                   <OPTION ID="07" VALUE="07">07</OPTION>
                   <OPTION ID="08" VALUE="08">08</OPTION>
                   <OPTION ID="09" VALUE="09">09</OPTION>
                 </SELECT><BR /><BR />
var bunchofnumbers = ['01', 'C02', '03', '04', '05', '06', '07', '08', '09'];
var rand = bunchofnumbers[Math.floor(Math.random() * bunchofnumbers.length)];
alert("Your number is: " + rand) ;       




3 个答案:

答案 0 :(得分:0)

您可以使用此代码从数组中删除不想选择的元素

var index = bunchofnumbers.indexOf('element you dont want');
if (index > -1) {
  bunchofnumbers.splice(index, 1);
}

bunchofnumbers然后将没有该元素,因此将不会被选择。您可以随时根据需要复制原始数组。

答案 1 :(得分:0)

解决方案:

以下代码选择随机元素并删除所选元素。

let bunchofnumbers = ['01', '02', '03', '04', '05', '06', '07', '08', '09'];
let randIndex = Math.floor(Math.random() * bunchofnumbers.length);
let valueChosen = bunchofnumbers[randIndex];
bunchofnumbers.splice(randIndex, 1); // removes chosen value from array
alert("Chosen/removed element is: " + valueChosen + " (bunchofnumbers: " + bunchofnumbers + ")");

答案 2 :(得分:0)

您可以编写排除函数,例如:

function randomExcludedNumber(numLength, excludeNumber) {
    var randNumber = excludeNumber;
    While(randNumber == excludeNumber)
    {
       randNumber = Math.floor(Math.random() * numLength)
    }
    return randNumber ;
  }

然后您可以像使用它:

 var bunchofnumbers = ['01', 'C02', '03', '04', '05', '06', '07', '08', '09']
 var selectedIndex = bunchofnumbers.indexOf("04"); //get selected value index
 var randomNum = randomExcludedNumber(bunchofnumbers.length, selectedIndex );
 var rand = bunchofnumbers[randomNum];
 alert("Your number is: " + rand) ;  

这是一个有效的演示:Fiddle

相关问题