将值从一个数组移动到另一个数组并删除它们

Move values from one array to another and remove them

本文关键字:数组 移动 另一个 删除 一个      更新时间:2023-09-26

我有一个20个数的数组。现在我(随机)选5个然后把它们放到另一个空数组中。我该怎么办?还有,如何在第一个数组中隐藏它们呢?谢谢大家。

var tenNumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20, 42, 178, 54, 76, 32, 12, 38, 154, 234];
var randomNumbers = document.getElementById("demo");
randomNumbers.innerHTML = tenNumbers[Math.floor(Math.random()*tenNumbers.length)];

似乎您应该能够使用splice从原始数组中删除一个随机元素,然后将结果推入新数组:

var tenNumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20, 42, 178, 54, 76, 32, 12, 38, 154, 234];
var outArray = [];
for(var i=0; i<5; i++) {
    outArray.push(tenNumbers.splice(Math.floor(Math.random()*tenNumbers.length), 1)[0]);
}
document.write(outArray + "<br />" + tenNumbers);

var tenNumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20, 42, 178, 54, 76, 32, 12, 38, 154, 234];
var randomNumbersArray = [];
for (var i = 0; i < 5; i++)
{
    randomNumbersArray.push(tenNumbers.splice(Math.floor(Math.random()*tenNumbers.length), 1));
}
document.getElementById("random").innerHTML = randomNumbersArray.join("<br />");
<div id="random"></div>

这个应该可以了。

  • 运行循环,直到第二个数组有五个条目。
  • 使用splice从原始数组中删除条目以避免双精度。

您也可以选择5个随机元素并使用.sort &.splice俏皮话:

var outArray = tenNumbers.sort(function(){ return Math.random() - 0.5; }).splice(0,5);

function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
}
var tenNumbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 20, 42, 178, 54, 76, 32, 12, 38, 154, 234];
var randNums = [];
var randomNumbers = document.getElementById("demo");
for(var i = 0; i < 5; i++) 
{
   var index = getRandomInt(0, tenNumbers.length - 1);        
   randNums.push(tenNumbers[index]); 
   randomNumbers.innerHTML += tenNumbers[index] + ", ";
   tenNumbers.splice(index, 1);
}
<div id="demo">
</div>