如何在不重复上一个选择的链接的情况下,以随机顺序访问数组中的链接


let urlArray = [
"link",
"link2",
"link3",
];
function randomUrl() {    
let randomNumber = Math.floor(Math.random() * urlArray.length);
let newUrl = urlArray[randomNumber];
let visitedGame = document.referrer;
setTimeout(function () {
//if the previous link is not the same as the one generated access the generated link
if (newUrl !== visitedGame)  {
window.location = newUrl;
//access the next link from the array
} else{

}
}, 3000);
}
randomUrl();

我有这个代码被卡住了。

所以我想做的是:

点击一下(这不在这里的代码中,但它有效(,我就可以访问这个函数。当我点击那个按钮时,我需要从这个数组中生成一个随机链接,但不要重复浏览器中上次访问的链接。所以没有之前被访问的url。我试着拿到文件。推荐人,但似乎不起作用。请帮助:(

您可以递归地调用函数,直到生成最后一个未访问的Url。

参见以下代码:

let urlArray = [
"link",
"link2",
"link3",
];
function randomUrl() {
let randomNumber = Math.floor(Math.random() * urlArray.length);
let newUrl = urlArray[randomNumber];
let visitedGame = document.referrer;
if (newUrl === visitedGame) {
// Recursively try generating another random Url if same as last visited
randomUrl();
} else {
// Visit the new Url after 3 seconds
setTimeout(() => {
window.location = newUrl;
}, 3000);
}
}
randomUrl();

您可以从数组中删除最后一个link。本例中使用了拼接。但在你的代码中,你可以复制原始数组,并使用它随机访问链接,访问后从数组中删除链接

let urlArray = [
"link",
"link2",
"link3",
];
function randomUrl() {
let randomNumber = Math.floor(Math.random() * urlArray.length);
let newUrl = urlArray[randomNumber];
console.log(newUrl);
urlArray.splice(randomNumber, 1);
console.log(urlArray)
}
randomUrl();

如果你需要总是相同的列表而没有删除链接,你可以保存url的最后一个索引,然后不要在下一步使用它,比如:

let urlArray = [
"link",
"link2",
"link3",
];
let index;
function randomUrl() {
let randomNumber = Math.floor(Math.random() * urlArray.length);
if (index !== randomNumber) {
let newUrl = urlArray[randomNumber];
console.log(newUrl);
index = randomNumber;
} else {
randomUrl();
}
}
randomUrl();
randomUrl();
randomUrl();
randomUrl();
randomUrl();
randomUrl();
randomUrl();
randomUrl();
randomUrl();
randomUrl();
randomUrl();
randomUrl();

同一链路可以多次使用,但下次时不能重复

最新更新