Node JS,传统的数据结构?(比如Set等),像节点的Java.util这样的东西?

Ric*_*ick 24 javascript set node.js data-structures

我喜欢节点JS,并且来自Java背景,我甚至有兴趣尝试一些节点可能看起来有点延伸的项目,比如搜索引擎项目.

我有点困惑的一件事是,似乎JavaScript缺乏传统的数据结构,例如一个集合,它具有超越计算机科学的精确定义,因为它已经在计算机存在之前用于数学(基本上是一个列表,不允许重复).似乎在使用节点JS时,没有像Java.util这样的库具有我已经习惯的这些基本数据类型,我意识到我可以自己创建它们,但这只会增加项目的开销.

节点(或一般的JavaScript)是否有任何lib可以解决这个问题?我认为node在很多项目中有很大的潜力可以取代像Java这样的语言,因为它在开发速度方面有很多优势,但是必须重新创建在更成熟的平台中被认为是理所当然的数据结构对于一个小项目来说可能是太多开销.

如果还有其他类似的问题我会道歉,但是我花了一些时间搜索并没有提出太多问题.

Adr*_*eil 14

es6有一个内置的Set类:

new Set([iterable]);
Run Code Online (Sandbox Code Playgroud)

请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set

  • 注意:node.js现在实现了这个"开箱即用".如果你只是像我一样寻找Set and Map,这就是你所需要的,并且坚持下去. (2认同)

wei*_*yin 8

Collections.js具有列表,映射,队列,集和堆,都具有一致的接口.Github上.


Gat*_* VP 6

似乎JavaScript缺乏传统的数据结构......

是的,这是javascript,数据结构的概念和实现与Java之类的语言完全不同.

我不确定你是否真的会用Javascript找到你想要的东西.但是,有一些像underscore这样的库应该可以更容易地构建你想要的结构类型.


B T*_*B T 6

它不再是true,node.js没有SetMap其他东西对象.node.js从最近的v12开始就有了它们.

但是,当然,如果你想要像java这样的库,请检查npm或github.您不仅限于node.js中标准的内容.


Hec*_*rea 5

你看过 Underscore.js 吗?http://underscorejs.org/

它不是与 java.util 一对一的,但它提供了一堆常用的实用程序函数。


dav*_*non 5

作为Underscore.js的更轻,更快的替代品,Lo-Dash(http://lodash.com/)正在吸引那些日子......但这不是Java.util!:-)