繁体   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