通过搜索查询进行数组过滤

Par*_*hah 3 javascript

如何过滤具有特定搜索词的数组?例如,我们有一个数组[Tom Harry,Tom John,John Glen,Tom Harward]当我们搜索“ Tom H”时,只有汤姆·哈里(Tom Harry)和汤姆·哈沃德(Tom Harward)作为输出[汤姆·哈沃德,汤姆·哈里];使用JavaScript

var k=0;
filter=[];
var fc=input.charAt(0);
var sc=input.charAt(1);
for(var i=0;i<array.length;i++)
{
    if(array[i].charAt(0)===fc)
    {
        if(array[i].charAt(1)===sc || sc.charAt(1)=="" )
        {       
            filter[k]=[];
            filter[k]=array[i];
            filter[k]=array[i];
            k++;    
        }
        else
        {
            continue;
        }
    }
    else
    {
        continue;
    }
}
Run Code Online (Sandbox Code Playgroud)

Hui*_*eng 5

如果您正在使用支持JavaScript 1.6的浏览器,则可以选择Array.filter。您的问题可以通过以下一种方法来解决(当然,您可以通过引入带有search_pattern参数的函数来概括该问题):

['Tom Harry','Tom John','John Glen','Tom Harward'].filter(function(name){return name.match(/Tom H/);});
Run Code Online (Sandbox Code Playgroud)

如果您希望它也可以在IE8或更低版本的旧浏览器上运行,则可以轻松实现filter自己(上面的链接包含一个实现)。顺便说一句,建议使用下划线库,该库提供许多集合操作功能,包括filter


小智 0

您可以检查 String.match() 或 String.indexOf() 方法。

var s="Tom Harry"
 if (s.match(/Tom H.*/)) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

或者你可以使用indexof(),就像

s.indexOf("Tom H") 
Run Code Online (Sandbox Code Playgroud)

然后检查索引。如果它 >= 0,则它包含该字符串。