如何在Jquery中搜索数组,如SQL LIKE%value%statement
我有一个带有一些值的数组。 如何使用jquery搜索与该匹配或接近的值的数组?
var a = ["foo","fool","cool","god"];
如果我想搜索oo
,那么它应该返回foo
, fool
和cool
因为这些字符串包含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 }