Javascript 数据结构库 [已关闭]

问题描述 投票:0回答:9

我想请求推荐一些 JavaScript 库,这些库提供了一些基本数据结构的实现,例如优先级队列、具有任意键的映射、尝试、图形等以及对其进行操作的一些算法。

我最感兴趣的是:

  • 涵盖的功能集,
  • 解决方案的灵活性 - 这主要适用于图表。例如,我是否必须使用提供的图形实现,
  • 使用语言的功能特性 - 有时它也会提供更大的灵活性,
  • 实施效果

我想指出的是,我知道可以使用 JavaScript 实现以下数据结构:

  • 地图,如果键值是字符串或数字,
  • 一套,(使用地图实现),
  • 队列,尽管正如下面指出的,它在某些浏览器上效率低下,

目前我最感兴趣的是优先级队列(不要与常规队列混淆),以及对输入图的格式不是很有干扰的图实现。例如,他们可以使用回调来遍历图的结构,而不是访问一些具有固定名称的具体属性。

algorithm data-structures javascript
9个回答
37
投票

编辑

截至 2024 年 8 月,Closure 库已被废弃,因为它“不再满足现代 Javascript 开发的需求,请参阅弃用通知和建议的替代方案,但与此问题相关:

  • 对于库的许多部分(
    goog.array
    goog.dom
    goog.events
    goog.json
    等),JavaScript 的内置解决方案应该足够了。
  • 对于许多特殊用途的包(数学、数据结构、其他算法),一个小型的集中库通常比 Closure 的整体方法更好。

原答案

我建议使用闭包库(尤其是闭包编译器)。

这里有一个带有数据结构的库goog.structs。 该库包含:

goog.structs.AvlTree
goog.structs.CircularBuffer
goog.structs.Heap
goog.structs.InversionMap
goog.structs.LinkedMap
goog.structs.Map
goog.structs.PriorityQueue
goog.structs.Set

例如,您可以使用单元测试:goog.structs.PriorityQueueTest

如果您需要处理数组,还有一个数组库:goog.array

如评论中所述,源已移至 github.com/google/closure,文档的新位置为:google.github.io/closure-library.


20
投票

你可以尝试Buckets是一个非常完整的JavaScript数据结构库,包括:

  • 链接列表
  • 词典
  • 多词典
  • 二叉搜索树
  • 堆栈
  • 队列
  • 设置
  • 二叉堆
  • 优先队列

3
投票

可能您想要的大部分内容都以一种或另一种方式内置于 Javascript,或者易于与内置功能组合在一起(原生 Javascript 数据结构非常灵活)。您可能喜欢JSClass

至于该语言的功能特性,underscore.js就是它所在的位置..


3
投票

我可以帮助您使用任意键的映射:我的 jshashtable 可以做到这一点,并且还有一个基于它的哈希集实现。


3
投票

高效队列.

如果您发现更多这些,请您将它们添加到jswiki。谢谢。 :)


3
投票

特别是对于类似图形的结构,我发现 graphlib 非常方便:

https://github.com/cpettitt/graphlib/wiki/API-Reference

它非常简单,比我尝试过的其他实现更快,具有所有基本功能、流行的图形算法和 JSON 数据导出。


1
投票

添加自定义 javascript 库的链接,该库提供优先级队列、尝试、基本图形处理和其他实现,以供该线程的访问者将来参考。查看 dsjslib


0
投票

data.js.

我不相信它的功能像你想要的那么丰富,但它有图表、散列和集合。

我认为这是一个轻量级的开始,您可以继续扩展。

至于它提供的功能,它写得很好,高效且有记录。


0
投票

您的 javascript 是在应用程序中还是在网页中?如果是用于应用程序,为什么不将数据结构外包给Redis?有一个 nodejs 客户端

Redis 是一个开源的高级键值存储。它通常被称为数据结构服务器,因为键可以包含字符串、散列、列表、集合和排序集合。

© www.soinside.com 2019 - 2024. All rights reserved.