保持排序列表的最佳策略受制于实时更新

时间:2013-08-19 21:18:18

标签: javascript algorithm list sorting facebook-timeline

我正在构建一个与Facebook时间轴功能非常相似的HTML列表。该列表最多可以获得100个项目,因此不需要执行。

与Facebook的时间表不同,我的列表非常有活力。例如,不同的事件是实时到达的,并且取决于时间戳,可能会被添加到列表中,插入(我无法保证新事件必然按时间顺序到达)甚至被删除。最重要的是,动画更新列表(添加/输入/删除)也会很不错,但这是一个单独的问题。

我想知道,一旦我用初始数据建立起来,维护列表的最佳策略(按时间排序)是什么?

感谢。

2 个答案:

答案 0 :(得分:2)

如其他答案所示,每个元素都有data-time属性。当新数据到达时,找到data().time小于新时间的第一个元素。如果有这样的元素,请使用element.before(newElement),否则使用container.append(newElement)。这样,列表将保持排序。

插图:http://jsfiddle.net/JXLGR/

答案 1 :(得分:0)

here有一个很好的jquery函数。您可以在html元素上实现数据属性:

<div data-time="1203812823873"></div>

然后你可以像这样调用这个函数:

$(".elements").sortElements(function(aElement0, aElement1) {

   return aElement0.data("time") - aElement1.data("time");

})