Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.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 - Fatal编程技术网

Javascript 如何防止随机函数在下次运行时选择该函数的最后结果?

Javascript 如何防止随机函数在下次运行时选择该函数的最后结果?,javascript,Javascript,我有一个从数组中选择随机项的函数。我正试图找出如何运行这个函数,以便下次运行时,它会排除上一个选项,以免重复这些选项 var itemArray= [ { name: 'Apple' }, { name: 'Orange' }, { name: 'Banana' } ]; var itemLength = itemArray.length; var randomNumber = Math.floo

我有一个从数组中选择随机项的函数。我正试图找出如何运行这个函数,以便下次运行时,它会排除上一个选项,以免重复这些选项

var itemArray= [
    {
        name: 'Apple'
    },
    {
        name: 'Orange'
    },
    {
        name: 'Banana'
    }
];

var itemLength = itemArray.length;

var randomNumber = Math.floor(Math.random() * legendLength) + 0;
var randomPick = itemArray[randomNumber];

document.getElementById("item").innerHTML = '<b>' + randomPick.name;
var itemArray=[
{
名称:“苹果”
},
{
姓名:“橙色”
},
{
名称:“香蕉”
}
];
var itemLength=itemArray.length;
var randomNumber=Math.floor(Math.random()*legendLength)+0;
var randomPick=itemArray[randomNumber];
document.getElementById(“item”).innerHTML=''+randomPick.name;

我相信这是一个简单的解决办法,我只是无法解决它。任何帮助都将不胜感激。

这里的代码可以工作,当项目用完时,默认情况下将返回未定义的

var itemArray= [
    {name: 'Apple'},
    {name: 'Orange'},
    {name: 'Banana'},
    {name: 'Pineapple'},
    {name: 'Avocado'},
    {name: 'Kiwi'}
];
var selectedItems = []

function getRandomItem(array) {
    let difference = array.filter(x => !selectedItems.includes(x));
    var itemLength = difference.length;
    var randomNumber = Math.floor(Math.random() * itemLength) + 0;
    var randomPick = difference[randomNumber];
    selectedItems.push(randomPick)
    return randomPick
}

该函数基本上从原始数组中删除已使用的元素,然后从尚未拾取项的新数组中拾取。

此处的代码将起作用,当项目用完时,默认情况下将返回未定义

var itemArray= [
    {name: 'Apple'},
    {name: 'Orange'},
    {name: 'Banana'},
    {name: 'Pineapple'},
    {name: 'Avocado'},
    {name: 'Kiwi'}
];
var selectedItems = []

function getRandomItem(array) {
    let difference = array.filter(x => !selectedItems.includes(x));
    var itemLength = difference.length;
    var randomNumber = Math.floor(Math.random() * itemLength) + 0;
    var randomPick = difference[randomNumber];
    selectedItems.push(randomPick)
    return randomPick
}
该函数基本上从原始数组中删除已使用的元素,然后从尚未拾取项目的新数组中拾取。

如果您只想“记住”上一个结果,可以执行以下操作:

var itemArray= [
{
    name: 'Apple'
},
{
    name: 'Orange'
},
{
    name: 'Banana'
}
];

var itemLength = itemArray.length;

var randomNumber = ""
var oldNumber = 1

function getRandomNumber(){
do{
    randomNumber = Math.floor(Math.random() * itemLength) + 0;
}
while(randomNumber === oldNumber)

oldNumber = randomNumber
var randomPick = itemArray[randomNumber];

document.getElementById("item").innerHTML = '<b>' + randomPick.name;
}
var itemArray=[
{
名称:“苹果”
},
{
姓名:“橙色”
},
{
名称:“香蕉”
}
];
var itemLength=itemArray.length;
var randomNumber=“”
var oldNumber=1
函数getRandomNumber(){
做{
randomNumber=Math.floor(Math.random()*itemLength)+0;
}
while(randomNumber==oldNumber)
oldNumber=随机数
var randomPick=itemArray[randomNumber];
document.getElementById(“item”).innerHTML=''+randomPick.name;
}
如果您只想“记住”最后一个结果,可以执行以下操作:

var itemArray= [
{
    name: 'Apple'
},
{
    name: 'Orange'
},
{
    name: 'Banana'
}
];

var itemLength = itemArray.length;

var randomNumber = ""
var oldNumber = 1

function getRandomNumber(){
do{
    randomNumber = Math.floor(Math.random() * itemLength) + 0;
}
while(randomNumber === oldNumber)

oldNumber = randomNumber
var randomPick = itemArray[randomNumber];

document.getElementById("item").innerHTML = '<b>' + randomPick.name;
}
var itemArray=[
{
名称:“苹果”
},
{
姓名:“橙色”
},
{
名称:“香蕉”
}
];
var itemLength=itemArray.length;
var randomNumber=“”
var oldNumber=1
函数getRandomNumber(){
做{
randomNumber=Math.floor(Math.random()*itemLength)+0;
}
while(randomNumber==oldNumber)
oldNumber=随机数
var randomPick=itemArray[randomNumber];
document.getElementById(“item”).innerHTML=''+randomPick.name;
}

您只需在函数之外保护该随机数即可。然后运行新的随机数,直到它不一样。您还可以将最后的X数保存到一个数组中,并防止它们再次弹出。您只需在函数之外保护该随机数即可。然后运行新的随机数,直到它不一样。您还可以将最后的X数字保存到一个数组中,防止它们再次弹出