按搜索查询进行数组筛选
Array filtering by search query
如何筛选具有特定搜索项的数组?例如,我们有一个数组[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;
}
}
如果您正在使用支持JavaScript1.6的浏览器,则可以选择Array.filter。您的问题可以通过以下一行来解决(当然,您可以通过引入带有search_pattern
参数的函数来推广它(:
['Tom Harry','Tom John','John Glen','Tom Harward'].filter(function(name){return name.match(/Tom H/);});
如果您希望它也能在IE8或更低版本的旧浏览器上工作,那么自己实现filter
很容易(上面的链接包含一个实现(。顺便说一句,建议使用下划线库,它提供了包括filter
在内的许多集合操作功能。
ES6实现,带有箭头功能并启动with:
['Tom Harry','Tom John','John Glen','Tom Harward'].filter(name => name.startsWith('Tom H'));
您可以在for循环中使用search((方法。
search((方法的信息:http://www.w3schools.com/jsref/jsref_search.asp
示例:
for(var i=0; i < nameOfArray.length; i++){
if(nameOfArray[i].search('Tom H') > -1){
resultArray.push(nameOfArray[i]);
}
}
此代码将循环遍历数组中的每个元素,如果您输入的文本与您键入的文本部分匹配(通过搜索方法(,它将把数组中的项推送到结果数组中。这应该创建一个具有所有匹配结果的数组。
您可以检查String.match((或String.indexOf((方法。
var s="Tom Harry"
if (s.match(/Tom H.*/)) {
// do something
}
或者你可以使用indexof((,就像一样
s.indexOf("Tom H")
然后检查索引。如果它>=0,则它包含该字符串。
<script type="text/javascript">
var src1= ["Tom Harry","Tom John","John Glen","Tom Harward"];
alert(searchStringInArray (src1,'Tom H') );
function searchStringInArray (src1,searched)
{
var res=""
for (var j=0; j<src1.length; j++) {
if (src1[j].match (searched))
{
res=res+src1[j]+","
}
}
return res;
}
</script>
使用此配对
相关文章:
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何筛选对象的数组属性
- 根据多个值筛选数组
- 如何按对象数组中的数组属性进行筛选
- 要筛选的数组的管道值的含义:$select.search in angular
- 如何筛选对象数组
- 具有绑定与未绑定函数的数组筛选器
- 角度筛选器 - 根据值数组筛选 JSON 结果
- 基于条件数组的数组筛选器
- 根据数组筛选字符串数组
- 按键数组筛选对象
- 基于索引数组筛选数组
- 通过字符串数组筛选对象数组
- 针对所有其他数组筛选数组
- Javascript:根据数组筛选键后,在对象中找到一个值最大的键
- 使用值数组筛选多个属性的值
- 使用另一个对象数组筛选对象数组
- 数组筛选器的异步或承诺条件
- 通过另一个整数数组筛选对象数组
- 按搜索查询进行数组筛选