如何使用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,我应该能够识别每个商店。