将随机结果更改为序列

Change random result to sequence

本文关键字:随机 结果      更新时间:2023-09-26

如何将此随机结果更改为从较小数字开始的序列?我是JS的新手,并尝试在没有解决方案的情况下进行修改。我希望任何人都可以提供帮助。

function randomFeed() {
    var $el = $("#randomFeed");
 var random = new Array('news1','news2','news3','news4','news5','news6');
    var randomIndex = Math.floor(Math.random() * 4);
    var newElement = random[randomIndex];
        $el.prepend("<tr><td>" + newElement + "</td></tr>").find("tr").first().hide();
        $el.find("tr").first().fadeIn();
        if ($el.find("tbody tr").length > 20) {
            $el.find("tbody tr").last().fadeOut(400, function() {
                $(this).remove();
            });
        }
    slimScrollUpdate($el.parents(".scrollable"));
    setTimeout(function() {
        randomFeed();
    }, 3000);
} 

所以你需要连续的新闻幻灯片而不是随机的?试试这个(注意全局feedIndex变量)

var feedIndex = 0;
function randomFeed() {
    var $el = $("#randomFeed"),
        news = new Array('news1','news2','news3','news4','news5','news6'),
        newElement = news[feedIndex++ % news.length];
    //console.log(newElement);
    $el.prepend("<tr><td>" + newElement + "</td></tr>").find("tr").first().hide();
    $el.find("tr").first().fadeIn();
    if ($el.find("tbody tr").length > 20) {
        $el.find("tbody tr").last().fadeOut(400, function() {
            $(this).remove();
        });
    }
    slimScrollUpdate($el.parents(".scrollable"));
    setTimeout(function() {
        randomFeed();
    }, 3000);
}

顺便说一句,这段代码的状态非常糟糕。它每次都会更改 DOM 以显示新的馈送元素。最好display:none渲染所有元素,并且只切换实际元素的可见性。这是常见的模式

试试这个:

news = new Array('news1','news2','news3','news4','news5','news6')
// option 1
news.sort(function() {
      return .5 - Math.random();
    });
//news = news1,news2,news3,news6,news4,news5
//option 2
len = news.length,
randomNumber = Math.floor((Math.random() * len) + 0);
// randomNumber = 3
part = news.slice(randomNumber, len)
// part = arrnews6,news4,news5

请更准确地说明您的期望/目标是什么!