簡體   English   中英

如何使用javascript / jquery實現排序但隨機的列表

[英]How to achieve a sorted but random list with javascript/jquery

我目前使用此代碼對我的項目列表進行隨機排序,並且效果很好:

$(document).ready(function () {
(function ($) {
    $.fn.randomize = function (childElem) {
        return this.each(function () {
            var $this = $(this);
            var elems = $this.children(childElem);
            elems.sort(function () {
                return (Math.round(Math.random()) - 0.5);
            });
            $this.remove(childElem);
            for (var i = 0; i < elems.length; i++)
            $this.append(elems[i]);
        });
    };
})(jQuery);

(function ($) {
    if (window.location.href.indexOf("st=") > -1) {

    } else {
        $('#itemBlock').randomize('.list_1');
    }
})(jQuery);

});

但是,當我想出一種方法來修改此腳本以按一定順序隨機返回結果時,我感到很沮喪。 例如,與之配合使用的列表返回了所有5家商店中所有特定類型商品的清單。 因此,如果有人在尋找圍裙,它將顯示我們5家商店中每家的所有圍裙。

上面的代碼肯定會隨機列出該列表,但我不知道如何考慮商店位置。

因此,現在搜索圍裙將首先從商店A,B,C,D和E返回如下列表:

BCDAEBCDDDCEABBACACABCDAA

但是我們想要實現的是這樣的回報:

ABCDEABCDEABCDEABCDEABCDE

不一定完全按照該順序,而是以某種方式修改函數,以便在加載更多結果之前先加載每個存儲區的結果。 因此,一家商店不會連續出現3家商店,否則一家商店的代表人數會更多。

我可以通過使用過濾器或排序功能來解決此問題嗎? 還是純JavaScript會更有效地處理此問題?

為此,您必須執行以下步驟:

  1. 分別對每個商店中的商品進行隨機排序
  2. 為每個隨機列表中的項目編號
  3. 可選-如果要按順序訂購商店,請在數字前加上零,然后為商店添加標識符( [padded item number]|[store identifier]例如00001|A
  4. 將所有列表合並為一個
  5. 按順序編號(或字符串)對該新列表進行排序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM