Firebase中有序列表的性能

Rad*_*ith 13 javascript firebase

如果我想在Firebase中维护一个有序列表,似乎最好的方法是手动为列表中的每个项目分配优先级.这意味着如果我从列表中插入或删除项目,我必须更新其后的所有项目的优先级.对于列表开头的项目,这意味着更新列表中的每个项目.在这种情况下,是否有更好的数据结构或算法?

And*_*Lee 4

您可以通过适当设置元素的优先级来创建有序列表。列表中的项目按优先级按字典顺序排序,或者如果优先级可以解析为数字,则按数值排序。

如果您想将项目插入现有列表的中间,修改现有项目的优先级可以,但效率非常低。更好的方法是在要插入值的两个项目之间选择一个优先级,并为新项目设置该优先级。

例如,如果元素 1 的优先级为“a”,元素 2 的优先级为“b”,则可以在优先级为“aa”(或“aq”、“az”等)的两者之间插入元素 3。

根据我们的经验,大多数时候,当您创建有序列表时,您不一定知道要预先插入项目的列表中的位置。例如,如果您正在为游戏创建排行榜,您事先并不知道您想要将新分数放置在列表中的第三位,而是您知道您想要将其插入到分数 10000 的任何位置(这可能恰好是第三)。在这种情况下,只需将优先级设置为分数即可实现此目的。请在此处查看我们的排行榜示例: https ://www.firebase.com/tutorial/#example-leaderboard

  • 感谢您这么快回复。在本例中,我想创建一个拖放列表,因此顺序由用户定义。我喜欢在两个所需项目之间插入优先级的想法,但我坚持一件事:当您使用“child_added”回调时,如何知道下一个项目是什么?您只能获得前一项,而不能获得后一项。 (3认同)
  • 您是否为任意顺序列表找到了一个好的解决方案,@RadfordSmith? (2认同)