我的目标是创建一个过滤器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)
}
}
如何看待我对示例中包含字符串cerca
的变量Hair
进行了增值。我将它与一个对象变量进行比较,我怎么说,问题是如果我插入字符串Hair
我在控制台中没有得到响应,如果我插入带有休息空间的字符串,比如比较字符串Hair Cut
我得到了控制台响应。
当变量cerca
等于compair字符串的第一个字符时,如何打印结果?特别是Hai
?
我不知道我是否清楚,希望是的。
答案 0 :(得分:2)
.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:添加了可能的结果&#39;溶液
编辑3:添加了JSFiddle