Javascript 创建字符串过滤器比较的最佳方法?

Javascript 创建字符串过滤器比较的最佳方法?,javascript,jquery,Javascript,Jquery,我的目标是创建一个filtersearch函数,特别是我使用的.indexOf方法允许我检查两个字符串是否相等。问题是,如果我用空格分隔符比较字符串,如下所示:Hair Cut 示例: 要搜索的字符串:Hair 对象中包含的字符串:Hair Cut var cerca = $('#filter_service').val(); for(var i = 0; i < GlobalVariables.availableServices.length; i++) { if (cerca.

我的目标是创建一个filter
search
函数,特别是我使用的
.indexOf
方法允许我检查两个字符串是否相等。问题是,如果我用空格分隔符比较字符串,如下所示:
Hair Cut

示例:
要搜索的字符串:
Hair

对象中包含的字符串:
Hair Cut

var cerca = $('#filter_service').val();
for(var i = 0; i < GlobalVariables.availableServices.length; i++) {
    if (cerca.toLowerCase().contains(GlobalVariables.availableServices[i].name.toLowerCase()) != -1) {
        console.log(GlobalVariables.availableServices[i].name)
    }
}
var cerca=$('filter_service').val();
对于(var i=0;i
如何查看在示例中,我将包含字符串
Hair
的变量
cerca
定值。我将其与一个对象变量进行比较,我是这样说的,问题是如果我插入字符串
Hair
我在控制台中没有得到响应,如果我插入带有空格的字符串,比如比较字符串
Hair Cut
我得到控制台响应

当变量
cerca
等于compair字符串的第一个字符时,如何打印结果?特别是
Hai

我不知道我是否清楚,希望是。

.contains()
用于检查DOM元素子元素。您在上面说过您正在使用
.indexOf
进行检查,但看起来您在代码中没有使用它

var cerca = $('#filter_service').val();
var searchIn;

for(var i = 0; i < GlobalVariables.availableServices.length; i++) {
    searchIn = GlobalVariables.availableServices[i].name.toLowerCase().split(' ');
    for (j = 0; j < searchIn.length; j++) {
        if (cerca.toLowerCase().split(' ').indexOf(searchIn[j].toLowerCase()) >= 0) {
            console.log(GlobalVariables.availableServices[i].name);
        }
    }
}

$('#filter_service').on('input', function() {
    var inputStr = $('#filter_service').val();
    var similar = [];
    for (i = 0; i < GlobalVariables.availableServices.length; i++) {
        if (GlobalVariables.availableServices[i].name.toLowerCase().indexOf(inputStr.toLowerCase) >= 0) {
            similar[similar.length] = GlobalVariables.availableServices[i].name;
        }
    }
    // At this point, you can do whatever you want with the similar service
    // names (all of the possible result names are included in the array, similar[].)
});
var cerca=$('filter_service').val();
var-searchIn;
对于(var i=0;i=0){
console.log(GlobalVariables.availableServices[i].name);
}
}
}
$('filter_service')。在('input',function()上{
var inputStr=$(“#过滤器_服务”).val();
var相似=[];
对于(i=0;i=0){
相似[similar.length]=GlobalVariables.availableServices[i].name;
}
}
//在这一点上,您可以使用类似的服务做任何您想做的事情
//名称(所有可能的结果名称都包含在数组中,类似于[]。)
});
我现在无法测试该代码,但从理论上讲,它应该可以工作

下面是一个JSFIDLE演示:

编辑:更新并修复了我的错误

编辑2:添加了“可能的结果”解决方案


编辑3:添加了一个JSFIDLE

是的,很抱歉我粘贴了我正在实际尝试的解决方案。您的代码也给出了此错误:未捕获类型错误:cerca.toLowerCase(…).split(…).includes不是函数哇!刚刚更新了我的答案;它现在应该可以正常工作了,没问题,因为换行符工作得很完美,但是如果我插入第一个字母,就可以创建一个代码,打印出我试图找到的对应对象的结果?这会很有帮助的,谢谢。我只是添加了一个可能的方法来实现这一点,但我不确定这是否正是您所要求的。我提供的解决方案只是返回一个
全局变量数组。AvailableService
名称,其中包含
过滤器服务
中的文本,并在每次更改其中的文本时更新。