如果我有一个包含超过 10,000 个元素的大型 javascript 字符串数组, 如何快速搜索它?
现在我有一个 javascript 字符串数组,用于存储工作描述, 并且我允许用户在输入框输入时动态过滤返回的列表。
假设我有一个像这样的字符串数组:
var descArr = {“翻转汉堡”、“抽气”、“投递邮件”};
并且用户想要搜索:"p"
如何快速搜索包含 10000 多个描述的字符串数组?
显然我无法对描述数组进行排序,因为它们是描述,所以二分搜索就结束了。由于用户可以通过 "p"
或 "pi"
或字母的任意组合进行搜索,这种部分搜索意味着我不能使用关联数组(即 searchDescArray["抽气"]
)
以加快搜索速度。
有什么想法吗?
最佳答案
由于实际浏览器中的正则表达式引擎在速度方面变得疯狂,那么这样做怎么样?而不是数组传递一个巨大的字符串并用标识符分隔单词。 示例:
- String
"flipping burgers""pumping gas""delivery mail"
- 正则表达式:
"([^"]*ping[^"]*)"
使用全局开关 /g
可以得到所有的匹配项。确保用户不会搜索您的字符串分隔符。
你甚至可以在字符串中添加一个 id,比如:
- String
“11 翻转汉堡”“12 抽气”“13 送邮件”
正则表达式:
"(\d+) ([^"]*ping[^"]*)"
示例:http://jsfiddle.net/RnabN/4/ (30000 个字符串,结果限制为 100 个)
关于javascript - 通过大型 js 字符串数组优化搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3975871/