高效插入和搜索的Javascript数据结构

3

我需要一个JavaScript数据结构,它可以让我高效地插入字符串和搜索字符串。我一直在寻找,但我发现唯一的数据结构是对象和数组。对象更多用于封装,不能真正用于搜索,使用数组可能会很慢。还有其他的数据结构可以让我高效地插入和搜索字符串吗?目前最好的方法是在数组中执行二分搜索。还有其他想法吗?谢谢。


2
请详细说明您希望执行哪种类型的“搜索”。 - Alnitak
你能具体说明一下“插入”和“搜索”的含义吗? - natlee75
我想将一个字符串插入到某个数据结构中,然后再回去搜索这个数据结构,看看这个字符串是否存在。搜索的字符串数量相当大且频繁出现,因此使用线性搜索(for循环)并不是最好的方法。 - ewein
1
搜索精确匹配还是部分匹配? - Marshall
机会列表(“数组”扫描)或Map /“对象”(直接查找或扫描)将满足您的要求;对于小n的O(n)大多是无意义的。但是,在JavaScript中可以实现许多ADT,如果需要的话。因此,我投票关闭此问题--细节不足 - user166390
1
@ewein 那么可以使用Map /“Object”。 strs = {"hello world": 1}; "hello world" in strs // -> true in "O(1)" time(请记住,在访问对象属性时使用的键会自动转换为字符串,这在这里是可以的,因为它们只是字符串。) - user166390
2个回答

3

对象更多地用于封装,不能真正用于搜索。

这在传统语言中是正确的,在JS中并不完全如此。

   var obj = { memberone: "value1" }

   var value = obj["memberone"];

   //value === "value1"

JS中可以搜索对象。请耐心等待...

使用数组可能会慢。

是的,可能会慢 - 但不一定慢。

有没有其他数据结构可以让我高效地插入和搜索字符串?

数据结构?没有。再说一遍,这是一个经典的观点。在JS中,情况不同。

看看_underscore.js吧。

  1. 它压缩后只有4k。
  2. 它提供了许多高级迭代器助手(这样你就不用自己写了)
  3. 它提供了模板来高效地显示你的数据到屏幕上。
  4. 它将有益于您的开发、维护和实现。

这是JS灵活性的一个很好的例子。

希望这能帮到你。 祝好! Nash


1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接