【发布时间】:2014-08-30 17:14:57
【问题描述】:
我目前使用此代码对我的项目列表进行随机排序,效果很好:
$(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 返回如下列表:
BCDAEBCDDDDCEABBACACABCDAA
但我们想要实现的是这样的回报:
ABCDEABCDEABCDEABCDEABCDE
不一定完全按照这个顺序,而是以某种方式修改函数,以便在加载更多结果之前加载每个商店的结果。因此,一家商店不会连续出现 3 家,或者一家商店的代表人数会多于其他商店。
我应该使用过滤器或排序功能来解决这个问题吗?或者纯 javascript 会更有效地处理这个问题?
【问题讨论】:
标签: javascript jquery sorting random filter