如何在Jquery中搜索数组,如SQL LIKE%value%statement

我有一个带有一些值的数组。 如何使用jquery搜索与该匹配或接近的值的数组?

var a = ["foo","fool","cool","god"]; 

如果我想搜索oo ,那么它应该返回foofoolcool因为这些字符串包含oo

更新

要使用Vanilla js在数组中搜索,我将使用在Array原型中实现的filter()方法

黑客风格

 let a = ["foo","fool","cool","god"]; let b = a.filter(item => item.indexOf('oo') > -1); console.log(b); // ["foo","fool","cool"] 
 function find(arr) { var result = []; for (var i in arr) { if (arr[i].match(/oo/)) { result.push(arr[i]); } } return result; } window.onload = function() { console.log(find(['foo', 'fool', 'cool', 'god'])); }; 

它打印["foo", "fool", "cool"]

尝试以下js代码

 function likeMatch(q) { my_arr = ["foo","fool","cool","god"]; var rArr=[]; for(var t in my_arr) { if(my_arr[t].indexOf(q)>0) rArr.push(my_arr[t]); } return(rArr); } 

试试这个:

 var infoData = ["foo","fool","cool","god"], search = 'oo'; //this makes the magic infoData = $$(infoData).filter(function(){ return (this.search(search) >= 0) }) var n = infoData.length; console.log("size result: "+ n ); for(var item = 0; item < n ;item++){ console.log("item: "+item+" data : "+infoData[item]); } 

结果:

 size result: 3 item: 0 data : foo item: 1 data : fool item: 2 data : cool 

尝试$.inArray http://api.jquery.com/jQuery.inArray/ 。 我不确定它是否允许你使用正则表达式,但值得一试

您可以使用Alasql JavaScript SQL库来完成。 它支持LIKE运算符,就像在SQL中一样

 var a = ["foo","fool","cool","god"]; var searchString = "%oo%"; var res = alasql('SELECT COLUMN * FROM [?] WHERE [0] LIKE ?',[a, searchString]); 

在jfFiddle上试试这个例子 。

如果要在包含哈希对象的数组中搜索,请使用以下函数

  function searchInArrayofHashes(array,key,keyword) { responsearr = [] for(i=0;i -1 ) { responsearr.push(array[i]) } } return responsearr }