【发布时间】:2011-11-18 23:42:09
【问题描述】:
我有大量的 Javascript 单词数组(约 100,000 个),我希望能够根据文本模式快速返回其中的一个子集。
例如,我想返回所有以模式开头的单词,因此输入hap 应该会得到["happy", "happiness", "happening", etc, etc]。
如果可能的话,我希望不遍历整个数组。
这样的东西工作得不够快:
// data contains an array of beginnings of words e.g. 'hap'
$.each(data, function(key, possibleWord) {
found = $.inArray(possibleWord, words);
// do something if found
}
关于如何在不迭代整个单词集的情况下快速将集合减少到可能的匹配项的任何想法?如果有帮助,单词数组按字母顺序排列。
【问题讨论】:
-
hap是否匹配chap? -
也许您可以将数组转换为字符串,然后使用正则表达式搜索该字符串。它更快吗?不知道,但值得一试。
-
我不理解您现有的代码。
data是 100,000 字的列表吗?如果是这样,words是什么?你为什么在“循环”中使用$.inArray()? -
@ConradFrix 不,我想这是一个类似于
hap*的搜索 -
@nnnnnn 更新了代码 -
data是一个单词开头的数组。我只是包含该代码以显示我所拥有的,并且不想在将来迭代words。
标签: javascript jquery arrays pattern-matching