如果我想在 Firebase 中维护有序列表,似乎最好的方法是手动为列表中的每个项目分配优先级。这意味着如果我在列表中插入或删除一个项目,我必须更新它后面所有项目的优先级。对于列表开头的项目,这意味着更新列表中的每个项目。在这种情况下是否可以使用性能更好的数据结构或算法?
最佳答案
您可以通过适当设置元素的优先级来创建有序列表。列表中的项目按优先级按字典顺序排序,或者如果优先级可以解析为数字,则按数值排序。
如果你想将项目插入现有列表的中间,修改现有项目的优先级是可行的,但效率极低。更好的方法是在要插入值的两个项目之间选择一个优先级,然后为新项目设置该优先级。
例如,如果元素 1 的优先级为“a”,元素 2 的优先级为“b”,则可以在优先级为“aa”(或“aq”、“az”等)的两者之间插入元素 3 ).
根据我们的经验,大多数情况下,当您创建有序列表时,您不一定事先知道要插入项目的列表中的位置。例如,如果您正在为游戏创建排行榜,您事先并不知道要将新分数放在列表中的第 3 位,而是知道要将它插入分数 10000 得到的任何位置(可能恰好是第三个)。在这种情况下,只需将优先级设置为分数即可完成此操作。请在此处查看我们的排行榜示例: https://www.firebase.com/tutorial/#example-leaderboard
关于javascript - Firebase 中有序列表的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13465767/