如何实现一个排序,但随机列表与javascript/jquery

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

本文关键字:列表 随机 javascript jquery 一个 何实现 实现 排序      更新时间:2023-09-26

我目前使用这个代码来随机排序我的项目列表,它工作得很好:

$(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

不一定按照这个顺序,但可以通过某种方式修改函数,以便在加载更多结果之前加载每个store的结果。所以不会有连续3家店,或者一家店比其他店多。

我应该使用过滤器或排序函数来处理这个问题吗?或者纯javascript会更有效地处理这个问题吗?

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

  1. 随机从每个商店单独排序物品
  2. 为每个随机列表中的项目编号
  3. 可选-如果您希望存储顺序,用零填充数字并附加存储标识符([padded item number]|[store identifier]例如00001|A)
  4. 将所有列表合并为一个
  5. 按顺序编号(或字符串)对新列表进行排序