Algorithm Javascript数据结构库

Algorithm Javascript数据结构库,algorithm,data-structures,javascript,Algorithm,Data Structures,Javascript,我想推荐一些JavaScript库,这些库提供了一些基本数据结构的实现,如优先级队列、带有任意键的映射、尝试、图形等,以及对它们进行操作的一些算法 我最感兴趣的是: 所涵盖的一系列功能 解决方案的灵活性-这主要适用于图形。例如,我是否必须使用提供的图形实现 使用语言的功能特性——有时也会提供更大的灵活性 执行情况 我想指出,我知道可以使用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/
——在线打印资源。请更新安塞尔!