【发布时间】:2015-12-11 11:23:28
【问题描述】:
我使用以下函数按日期对 div 数组进行排序 -
function sortDates(arrayContent) {
arrayContent.sort(function (a, b) {
var arrDate = $(a).find("#postedDate").text().replace(" posted at: ", "");
var brrDate = $(b).find("#postedDate").text().replace(" posted at: ", "");
var aTime = arrDate.split(' ')[1];
var aDate = arrDate.split(' ')[0];
a = new Date(aDate.split('/')[2], aDate.split('/')[1] - 1, aDate.split('/')[0], aTime.split(':')[0], aTime.split(':')[1]);
var bTime = brrDate.split(' ')[1];
var bDate = brrDate.split(' ')[0];
b = new Date(bDate.split('/')[2], bDate.split('/')[1] - 1, bDate.split('/')[0], bTime.split(':')[0], bTime.split(':')[1]);
return a > b ? -1 : a < b ? 1 : 0;
});
}
arrayContent =
arrayContent[0] = "<div class="mHr" id="mFID">
<div id="postedDate"> posted at: <b>11/12/2015 11:12:16</b> </div>
</div>" // etc etc
这个当前函数确实可以工作,但是我希望对数百个 div 进行排序,并且使用这种方法的运行时间很长。
当前的限制是我无法在填充 arrayContent 之前进行日期转换,并且添加到 arrayContent 的每个值始终是一个 HTML 字符串,因此我必须找到 postedDate 然后相应地拆分它以创建一个有效的日期变量。
这是我想出的最好的,它可以工作,但是如前所述,它超级慢。
我还发现了 this 问题,它的作用与我大致相同,但没有更快的解决方案。
【问题讨论】:
-
这是一个服务器端任务。如果您不想让客户端浏览器崩溃。
-
这个数组的数据首先来自哪里,你不能在那里排序吗?
-
@Rob C 它来自 api 调用,多个具有不同格式的数据被解析出来并创建通用 HTML arrayContent 值。
-
好的。我认为最好的想法是编写一个服务器端服务,它使用这些 API、整理和排序数据,然后将处理后的内容提供给客户端。
-
是的,我就是这么想的,我想在生产中处理更大的容量时这是有道理的,不过对于演示来说效果很好! :)