Heim > Fragen und Antworten > Hauptteil
Die Inhaltshilfe bietet Ihnen eine Liste vorgeschlagener Vervollständigungen für teilweise eingegebene Zeichenfolgen.
Die Inhaltshilfe bietet Ihnen eine Liste vorgeschlagener Vervollständigungen für teilweise eingegebene Zeichenfolgen.
Die Beschreibung ist ungefähr wie oben, ich weiß nicht, wie ich sie mit einem genaueren Wort beschreiben soll.
sublime, Sie geben „unvollständige Zeichen“ ein und es werden Ihnen alle Ergebnisse zurückgegeben, die diese Buchstaben enthalten. Beispiel: Geben Sie ds ein, um den Schreibtisch zu erhalten, auch wenn in der Mitte ein Buchstabe e steht.
Ich möchte nur wissen, wie das erreicht wird und was das Prinzip ist?
Hat diese Funktion auch einen Namen (ich weiß eigentlich nicht, wie diese Funktion heißen soll, daher behindert sie meine Suche nach Antworten online)?
迷茫2017-07-03 11:44:19
@boxsnake 给的是搜索数组的例子,返回的结果还应该排序的,“avsdsss”优先级最高,它包含了连续的“ds”。“everybody”也应该命中,它包含了“d”。
搜索数组的时间复杂度太高了,当关键字很多的时候,速度基本不可接受。
高效可行的方法是用字符串搜索树。
海量数据处理之Trie树(字典树)
女神的闺蜜爱上我2017-07-03 11:44:19
这个功能,应该叫“搜索智能提示”
实现办法有很多种,但是我只知道最简单最容易理解的一种,复杂的对查询算法做了优化,效率更高,可能涉及到动态规划问题。
如果是最简单的方法,就是把字符串拆开,然后向每两个字中间放入一个.*
,再将其生成正则,用这个正则去匹配列表
JS伪代码:
var list = [ ... ];
var text = 'ds';
var result = [];
if(text != '') {
var pattern = new RegExp(text.split('').join('.*'));
result = list.filter(function(item) {
return pattern.test(item);
});
}
演示效果: