Algorithm Javascript数据结构库
我想推荐一些JavaScript库,这些库提供了一些基本数据结构的实现,如优先级队列、带有任意键的映射、尝试、图形等,以及对它们进行操作的一些算法 我最感兴趣的是:Algorithm Javascript数据结构库,algorithm,data-structures,javascript,Algorithm,Data Structures,Javascript,我想推荐一些JavaScript库,这些库提供了一些基本数据结构的实现,如优先级队列、带有任意键的映射、尝试、图形等,以及对它们进行操作的一些算法 我最感兴趣的是: 所涵盖的一系列功能 解决方案的灵活性-这主要适用于图形。例如,我是否必须使用提供的图形实现 使用语言的功能特性——有时也会提供更大的灵活性 执行情况 我想指出,我知道可以使用JavaScript实现以下数据结构: 映射,如果键值是字符串或数字 一个集合(使用映射实现) 队列,尽管正如下面指出的,在某些浏览器上效率很低 目前,
- 所涵盖的一系列功能
- 解决方案的灵活性-这主要适用于图形。例如,我是否必须使用提供的图形实现
- 使用语言的功能特性——有时也会提供更大的灵活性
- 执行情况
- 映射,如果键值是字符串或数字
- 一个集合(使用映射实现)
- 队列,尽管正如下面指出的,在某些浏览器上效率很低
目前,我最感兴趣的是优先级队列(不要与常规队列混淆),这是一种对输入图的格式不太敏感的图形实现。例如,他们可以使用回调遍历图的结构,而不是使用固定名称访问某些具体属性。可能您需要的大部分内容都是以某种方式内置到Javascript中,或者很容易与内置功能组合在一起(本机Javascript数据结构非常灵活)。你可能会喜欢 至于语言的功能特性,这就是它所处的位置 我不相信它有你想要的那么丰富的功能,但它有图表、散列和集合 我认为这是一个轻量级的开始,你可以扩展
至于它提供了什么,它写得很好,效率很高,并且有文档记录 我可以帮助您使用带有任意键的映射:my可以做到这一点,并且在其上还构建了一个哈希集实现。 如果您发现更多这些,请将它们添加到。谢谢。:) 您可以尝试一个非常完整的JavaScript数据结构库,其中包括:
- 链表
- 字典
- 多词典
- 二叉搜索树
- 堆叠
- 排队
- 设置
- 包
- 二进制堆
- 优先级队列
goog.structs.AvlTree
goog.structs.CircularBuffer
goog.structs.Heap
goog.structs.InversionMap
goog.structs.LinkedMap
goog.structs.Map
goog.structs.PriorityQueue
goog.structs.Set
例如,您可以使用单元测试:
如果需要处理数组,还有一个数组库:
如注释中所述,源代码已移动到,文档的新位置为:。您的javascript是在应用程序中还是在网页中?如果是针对应用程序,为什么不将数据结构外包给?有一个 Redis是一个开源的高级键值存储。它通常被称为数据结构服务器,因为键可以包含字符串、哈希、列表、集和排序集
添加到自定义javascript库的链接,该库提供优先级队列、尝试、基本图形处理和其他实现,供该线程的访问者将来参考。查看特别是对于类似图形的结构,我发现graphlib非常方便:
它非常直截了当,比我尝试的其他实现更快,具有所有基本功能、流行的图形算法和JSON数据导出。这不是一个真正的答案,所以我要评论一下:其中一些是该语言的一部分。所有JavaScript对象都是带有任意键的映射;由于属性值可以是对象,因此它们可以形成图形。JavaScript“数组”(它)提供堆栈特性(
push
,pop
)。@Crowder Yea,我同意。但键必须是数字或字符串,所以我不认为它是任意的。对于push&pop,我当然可以使用它来实现队列,但对于优先级队列没有太多帮助。我问的是js缺少的数据结构(它缺少很多)。这就是为什么它是一个评论,而不是一个答案。:-)(是的,属性名必须是字符串。事实上,即使数组索引也是属性名,因此也是字符串,尽管我们几乎总是使用数字——理论上,它们被转换为字符串,然后再查找属性,尽管人们希望实现优化这一点。)我不同意。大多数库(如underline.js)都提供了可用性功能,让您可以编写更短、更优雅的代码。这对实现优先级队列有什么帮助。我特别要求提供js中没有的特性。当然,我可以在尝试和图表的同时实现优先级,但是如果有人为我做了,我不介意使用这项工作。我会自己使用下划线.js路由,实现任何缺少我的东西。GoogleClosure是一个很棒的库,但当你将它与Closure编译器一起使用时,它真的非常出色,而且它看起来像是由Java程序员而不是JavaScript实现的。看起来确实很有希望。我知道你可以不用谷歌闭包编译器来使用它?事实上,使用它很方便,因为它可以进行类型检查,帮助防止打字错误和其他偶尔出现的错误。这些链接现在已经失效了!数据结构库已移动到:。PriorityQueue:在此页面上搜索structs_PriorityQueue:(5个文件)库已移动到。有关数据结构,请参阅。@user2465896您的第二个链接已断开,我在任何地方都找不到结构上的文档。很好,但在我的例子中,它是客户端Javascript。“客户端”是什么意思?我的意思是它在浏览器中运行。此链接重定向到http://substance.io/composer/
——在线打印资源。请更新安塞尔!