创建字符串筛选器比较的最佳方式

Best way to create string filter comparation?

本文关键字:最佳 方式 比较 字符串 筛选 创建      更新时间:2023-09-26

我的目标是创建一个过滤器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)
    }
}

如何查看我在示例中对包含字符串Hair的变量cerca进行了估价。我将其与一个对象变量进行比较,正如我所说,问题是如果我插入字符串Hair,我在控制台中没有得到响应,如果我插入像比较字符串Hair Cut那样带有空格的字符串,我会得到控制台响应。

当变量cerca等于压缩字符串的第一个字符时,我如何打印结果?特别是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[].)
});

我现在不能测试那个代码,但从理论上讲,它应该可以工作。

以下是一个JSFiddle演示:http://jsfiddle.net/MrGarretto/vrp5pghr/

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

编辑2:添加了"可能结果"解决方案

编辑3:添加了一个JSFiddle