我正在尝试使用Local Storage为我的应用程序实现自动完成功能。 有没有办法使用' LIKE%value%'来搜索一系列单词。条件?
var autocompleteArr = ['two', 'three', 'twenty two', 'twelve'];
mySearchMethod(autocompleteArr, 'tw'); //['two', 'twenty two', 'twelve']
答案 0 :(得分:3)
如果您对部分搜索感兴趣filter:
function match(value) {
return value.match(/.*tw.*/);
}
var filtered = ['two', 'three', 'twenty two', 'twelve'].filter(match);
// filtered is ['two', 'twenty two', 'twelve']
如果对完全匹配感兴趣,那么 indexOf
就可以。
答案 1 :(得分:1)
您可以使用indexOf检查字符串是否包含其他字符串。
var autocompleteArr = ['two', 'three', 'twenty two', 'twelve'];
function mySearchMethod(haystack, needle) {
arr = [];
for(var i = 0; i < haystack.length; i++) {
if (haystack[i].indexOf(needle)) {
arr.push(haystack[i]);
}
}
return arr;
}
答案 2 :(得分:1)
function arrayContains(autocompleteArr, searchString){
var answerArray = [];
for(var i = 0; i < autocompleteArr.length; i++){
if(autocompleteArr[i].indexOf(searchString) != -1){
answerArray.push(autocompleteArr[i]);
}
}
return answerArray;
}
答案 3 :(得分:1)
您可以将正则表达式与Array.filter
:
var input = ... // get the user input from somewhere
var autocompleteArr = ['two', 'three', 'twenty two', 'twelve'];
var suggestions = autocompleteArr.filter(function(el){
return new Regexp(input).test(el);
});
如果您想从键入的开头进行匹配,请将此行更改为:
return new Regexp("^"+input).test(el);
答案 4 :(得分:1)
您可能想要做这样的事情
var autocompleteArr = ['two', 'three', 'twenty two', 'twelve'];
var autocomplete = function(word) {
return autocompleteArr.filter(function(ele) {return ele.match(".*"+word+".*");})
}
autocomplete("tw") // ["two", "twenty two", "twelve"]