JS库支持各种数据结构?(如爪哇的番石榴)
js library to support various data structures? (like guava in java)
来自Java,我真的很喜欢Guava提供的丰富数据结构集合提供的灵活性。js或jquery中是否有"类似番石榴"的库?
注意:我听说过关闭,它似乎有点沉重 - 还有更简单的吗?(或者关闭真的是我需要的吗?
注2:我所说的"丰富的数据结构集合"是指排序映射和集合,multimaps(允许重复键(和multiset(允许多个条目的集合 - 看起来很奇怪,但实际上非常有用!(等。
如果 JS 的"丰富的数据结构集合">是指在 JavaScript 上操作的实用程序 Array
s、Object
和 JavaScript 本身,那么我会推荐 Underscore.js:
Underscore 是一个用于 JavaScript 的实用程序带库,它提供了一个 很多函数式编程支持。(...)下划线提供 60多个功能,支持通常的功能嫌疑人:
map
,select
,invoke
— 以及更专业的助手:功能 绑定、JavaScript 模板、深度相等测试等。它 委托给内置函数(如果存在(,因此现代浏览器将 使用forEach
、map
、reduce
、filter
、every
、some
和indexOf
.
它还具有类似 Set 的函数,如 union
、intersection
和 difference
、类型检查函数 isXXX(isArray
等(、函数好东西以及更多没有这样的库你会自己编写的东西。
Underscore有干净的代码,经过良好的测试并且现在很受欢迎,我每天都在JS项目中使用它。
问题编辑后编辑:
我知道Guava有多映射,多集等,但它们都是Java设计的结果,很难在JS中编写这些集合的1对1实现。这是因为Javascript没有:
- 静态类型,
- Java意义上的类,使用原型代替(见这个答案(,
- 接口(但另一方面具有作为一类对象的函数(,
- 易于定义的对象相等性(
var t1 = { test: 1 }, t2 = { test: 1 }; t1 === t2
false
(
所以很难写出通用的集合实现,更不用说多集或多映射了。例如,有一些 Set 实现,例如 Closure 的一个或这个,但它们并不完美 - 首先修改插入到 Set 中的元素 (!(,第二个不是主流的、经过良好测试的项目(我个人从未使用过它,所以不能说更多(。
在Javascript中,你只是做var multimap = { key: [ 1, 2, 3.0 ], key2: [ 4, 'test', { bla: null }, 1 ] }
,由于语言设计,你不能只做multimap.containsValue({ bla: null })
。我提到了下划线.js因为它有 95% 的实用程序函数,你将使用 JS 集合,即数组和对象。如果你想要更多,只需使用 Closure 的结构,但库本身相当大。
现在有一个更轻、更快的 Underscore.js 替代方案:Lo-Dash (http://lodash.com/(。
js-sdsl
一个JavaScript标准数据结构库,以STL为基准C++。
该库具有严格的时间复杂度保证,可以放心使用。
最新的测试版包括迭代器函数,可以像 c++ 中的迭代器一样使用。
包含的数据结构
- 向量
- 叠
- 队列
- 链接列表
- 德克
- 优先级队列
- 设置(使用 RBTree(
- 地图(使用 RBTree(
- 哈希集(仅供参考(
- 哈希图(仅供参考(
用法
为了帮助您更好地使用,我们提供了此 API 文档。
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- jQuery检测浏览器是否支持Zoom
- 错误:对象没有't支持'自动完成'
- EmberJS中支持单字母单词模型
- javascript中的命名空间,IDE中支持代码完成/内容辅助's
- Internet Explorer缺少占位符支持,特别是密码字段
- 为什么我得到错误IE修剪方法是't支持
- 任何浏览器都不支持javascript函数
- GTK百老汇支持同时连接
- JQuery示例不起作用-“;对象没有't支持属性或方法'按钮'&”;
- 对象不支持属性或方法“自动完成”
- 对象没有'不支持set_viewXML
- Javascript Q库浏览器支持
- 您的平台不支持RxJS-Array.observe
- React Native当前是否支持访问用户'的通讯簿
- 将HTML(支持文件)中的令牌(字符串、数字等)传递给LogiXML
- 错误:语法错误,无法识别的表达式:不支持的伪:无效/RectJS/Unit Testing
- Excellen导出xlsx支持
- Django'支持Javascript文件中的翻译
- JS库支持各种数据结构?(如爪哇的番石榴)