如何使用javascript/jquery实现排序但随机的列表

如何使用javascript/jquery实现排序但随机的列表,javascript,jquery,sorting,random,filter,Javascript,Jquery,Sorting,Random,Filter,我目前使用此代码对我的项目列表进行随机排序,效果非常好: $(document).ready(function () { (function ($) { $.fn.randomize = function (childElem) { return this.each(function () { var $this = $(this); var elems = $this.children(childElem);

我目前使用此代码对我的项目列表进行随机排序,效果非常好:

$(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返回如下列表:

BCDAEBCDCEABACABCDAA

但我们想要的是这样的回报:

ABCDEABCDEABCDE

不一定是按照这个顺序,而是以某种方式修改函数,以便在加载更多结果之前加载每个存储的结果。所以一个商店不会有3个,或者一个商店会比其他商店代表更多


我是通过使用过滤器还是排序功能来实现这一点的?或者纯javascript会更有效地处理这个问题吗?

要实现这一点,您必须遵循以下步骤:

对每个商店的商品分别进行随机排序 对每个随机列表中的项目进行编号 可选-如果您想让门店井然有序,请用零填充数字,并为门店[padded item number]|[store identifier]例如00001 | A追加一个标识符 将所有列表合并为一个 按顺序编号或字符串对新列表进行排序
谢谢你的快速回答!我已经在这方面工作了一段时间,但没有多大进展——不过我想我明白了。我随机对单个列表进行排序,得到后按顺序编号,然后在组合列表中设置,使其按顺序排序:所有1、2、3等等。这是一个聪明的解决方案。我有一点工作要做的代码,但我欣赏你的观点!我不会想到的!如果我无法直接访问各个列表,是否还有分配数字的方法?如果我只处理组合列表,你可以用某种方式对元素进行分组。否则,循环并在一个数组中跟踪每个商店的号码。嗯…知道了。那我就试试看。我想如果我使用javscript,我应该能够识别每个商店。