我需要在javascript中有效地编辑大型文本文档(例如,源代码文件)。
insertAtPosition(n, str)
和deleteAtPosition(n, length)
必须快速。
天真的字符串实现很慢,因为每个操作都需要将文档的内容复制到新字符串。
有一些有效的方法可以做到这一点。我可以使用一个行数组(Ace,也就是Bespin这样做),但是当有超长行或许多短行时这会很慢。更好的实现将使用skip lists或其他一些聪明的数据结构。
但是,我希望有人已经实现了这样的事情。
是否有任何图书馆已经这样做了?我似乎无法找到任何与谷歌有用的东西 - 这个算法问题有一个共同的名称吗?
答案 0 :(得分:2)
我认为没有任何其他库可以执行此操作,因此我使用跳过列表自行实现它。使用树数据结构可能会更快,但跳过列表很容易实现,而关闭编译的javascript只有2.5 KB。
如果有其他人有同样的问题,请享受: