Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有库可以在Javascript中高效地编辑大字符串?_Javascript_Algorithm_Text - Fatal编程技术网

有没有库可以在Javascript中高效地编辑大字符串?

有没有库可以在Javascript中高效地编辑大字符串?,javascript,algorithm,text,Javascript,Algorithm,Text,我需要用javascript高效地编辑大型文本文档(例如,源代码文件) 插入位置(n,str)和删除位置(n,长度)必须快速 简单的字符串实现很慢,因为每个操作都需要将文档内容复制到新字符串 有几种有效的方法可以做到这一点。我可以使用一组线(aka Bespin就是这样做的),但是当有超长线或许多短线时,速度会很慢。更好的实现将使用或其他一些巧妙的数据结构 但是,我希望有人已经实现了这样的事情 有没有已经这样做的图书馆?我似乎在Google上找不到任何有用的东西-这个算法问题有一个通用的名字吗?

我需要用javascript高效地编辑大型文本文档(例如,源代码文件)

插入位置(n,str)
删除位置(n,长度)
必须快速

简单的字符串实现很慢,因为每个操作都需要将文档内容复制到新字符串

有几种有效的方法可以做到这一点。我可以使用一组线(aka Bespin就是这样做的),但是当有超长线或许多短线时,速度会很慢。更好的实现将使用或其他一些巧妙的数据结构

但是,我希望有人已经实现了这样的事情


有没有已经这样做的图书馆?我似乎在Google上找不到任何有用的东西-这个算法问题有一个通用的名字吗?

我认为没有其他库可以做到这一点,所以我自己用跳过列表实现了它。使用树数据结构可能会更快,但是跳过列表很容易实现,并且闭包编译的javascript只有2.5 KB

如果还有其他人有同样的问题,请享受:


试试ropes:也许可以使用
source.split(“”)
将其拆分为字符,然后使用本机Array.splice,最坏的情况是O(n)。@Reid:字符串的原始操作已经是O(n),所以这不会实现任何效果。如果Javascript中的数组有每元素的内存开销,您的方法实际上会更慢。@j_random_hacker:naive string manipulation不包括在给定点插入字符的实用程序,因为字符串是不可变的。@Reid:我理解——我说的是“修改”不可变的字符串(通过创建新的、已更改的副本)为O(n),与您建议的方法相同,假设可以在固定时间内分配内存。在字符串中的任何位置插入/删除字符都需要分配内存,然后将所有n个字符复制到新的不可变字符串中。your Array.splice()如果在接近结尾处插入/删除,并且恰好不需要重新分配内存,则可能会更快,因为此时只需要复制该点之后的字符,但仍然是O(n)。