代码审查-随机链接与内存- Javascript

Code review --- Random link with memory -- Javascript

本文关键字:内存 Javascript 链接 随机 代码审查      更新时间:2023-09-26
    var links = ["http://www.google.com/", "http://www.cnn.com/", "http://www.bbc.com/", "http://www.nbc.com/"];
    var random = Math.round(Math.random() * 4);
    var previous = [];
    previous.push(random);
    return previous
    for (var i = 0; i < previous.length; i++) {
        while (previous[i] == random) {
            random = Math.round(Math.random() * 4);
        }
}
    window.location = links[random];

我试图使一个代码,将被用来引导用户从一组网站随机网站。这将被激活的按钮在谷歌网站,我只是没有得到的html部分。无论如何,当我尝试在jsfiddle中运行这段代码时,输出只是一个空白屏幕。什么错了吗?这是我的逻辑

  1. 设置的站点数组。
  2. 'random'选择0到4之间的数字,这对应于数组中的站点
  3. 一个空数组
  4. 这将把'random'的输出推到空数组

  5. for循环检查空数组

  6. 中是否有数据
  7. While循环说"ok,如果random选择一个已经在数组'previous'中的数字,我将再次运行random。
  8. 一旦一个未选择的数字被输出,一个新的窗口打开到所选的站点。

遗憾的是,它不是这样执行的。任何建议吗?

编辑:Jsfiddle

我认为稍微修改一下代码可能会达到目的,特别强调删除循环:

var links = ["http://www.google.com/", "http://www.cnn.com/", "http://www.bbc.com/", "http://www.nbc.com/"];
var previous = [];
function showLink() {
    if (previous.length !== links.length) {
      var random = Math.round(Math.random() * ((links.length - 1) - 0) + 0 );
      if (previous.indexOf(links[random]) > -1) {
        showLink(); 
      } else {
        console.log(links[random], previous)
        previous.push(links[random]);
      }
    } else {
        console.log('No more links');
    }
}

此时一直调用showLink,直到链接用完。

演示

var links = ["http://www.google.com/", "http://www.cnn.com/", "http://www.bbc.com/", "http://www.nbc.com/"];
var random = Math.round(Math.random() * 4);
var previous = [];
previous.push(random);
for (var i = 0; i < previous.length; i++) {
    while (previous[i] == random) {
        random = Math.round(Math.random() * 4);
    }
}
window.location = links[random];

您缺少一个括号,并且在for循环之前有一个return语句。当然,它不能工作,因为return语句下的代码无法按照您编写的方式访问。