Как искать массив в JQuery, например, SQL LIKE% value% statement
У меня есть массив с некоторыми значениями. Как я могу искать этот массив с помощью jquery для значения, которое соответствует или близко к нему?
var a = ["foo","fool","cool","god"];
Если я хочу искать oo
, он должен возвращать foo
, fool
и cool
, потому что эти строки содержат oo
.
Ответы
Ответ 1
обновленный
Для поиска в массиве с помощью Vanilla js я бы использовал метод filter()
реализованный в прототипе Array.
Хакерский стиль
let a = ["foo","fool","cool","god"];
let b = a.filter(item => item.indexOf('oo') > -1);
console.log(b); // ["foo","fool","cool"]
Ответ 2
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"]
Ответ 3
Попробуйте выполнить следующий код 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);
}
Ответ 4
попробуйте следующее:
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
Ответ 5
попробуйте $.inArray
http://api.jquery.com/jQuery.inArray/. Я не уверен, что это позволит вам использовать регулярное выражение, но стоит попробовать
Ответ 6
Вы можете сделать это с помощью Alasql JavaScript SQL library.
Он поддерживает оператор LIKE, как в SQL
var a = ["foo","fool","cool","god"];
var searchString = "%oo%";
var res = alasql('SELECT COLUMN * FROM [?] WHERE [0] LIKE ?',[a, searchString]);
Попробуйте этот пример в jfFiddle.
Ответ 7
используйте следующую функцию, если вы ищете в массиве, содержащем хэш-объект
function searchInArrayofHashes(array,key,keyword) {
responsearr = []
for(i=0;i<array.length;i++) {
if(array[i][key].indexOf(keyword) > -1 ) {
responsearr.push(array[i])
}
}
return responsearr
}