javascript:最快的方法是在一组字符串中找到一个字符串

javascript:最快的方法是在一组字符串中找到一个字符串,javascript,arrays,string,search,sorted,Javascript,Arrays,String,Search,Sorted,我需要一种快速的方法来确定一个字符串是否在一组字符串中 随着时间的推移,我的集合不会有太大的变化,因此将其放入排序数组并使用二进制搜索是一种选择(如本文所建议的:) 但考虑到我们讨论的是字符串,使用trie会更快吗?如果是这样的话,我是否可以使用一个众所周知且受支持的实现?(在github上找到了一些,但似乎不受支持或广泛使用) 我也在读: 这种方法有没有可能胜过使用trie (我没有时间尝试实现所有方法并对它们进行基准测试。)您有JavaScript。如果您使用TIE,它将是您自己在Java

我需要一种快速的方法来确定一个字符串是否在一组字符串中

随着时间的推移,我的集合不会有太大的变化,因此将其放入排序数组并使用二进制搜索是一种选择(如本文所建议的:)

但考虑到我们讨论的是字符串,使用trie会更快吗?如果是这样的话,我是否可以使用一个众所周知且受支持的实现?(在github上找到了一些,但似乎不受支持或广泛使用)

我也在读:

这种方法有没有可能胜过使用trie


(我没有时间尝试实现所有方法并对它们进行基准测试。)

您有JavaScript。如果您使用TIE,它将是您自己在JavaScript中的实现,而散列几乎是整个JavaScript建立的基础,在执行环境中被优化为地狱。我会这样做:

var STRINGS = {
  "foo": true,
  "bar": true
}

var fooExists = STRINGS.hasOwnProperty("foo");

也许这正是我在寻找的答案,只是为这样的目的构建一个字典是如此的反直觉……如果它能帮助你使用“反直觉”位,Ruby的
Set
和Java的
TreeSet
使用完全相同的方法(分别使用一个组合的
Hash
TreeMap
)是的,这确实有帮助:)事实上这甚至可以解释为什么没有广泛使用的trie实现?我真的不知道。对于大型数据库,我想象原生trie将击败原生散列(无论是在内存中还是在速度上,取决于散列所分配的存储桶数量);但是本地哈希要打败脚本化的trie。然而,没有基准,这只是猜测。