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数字保存到一个数组中,防止它们再次弹出