Подтвердить что ты не робот

Как искать массив в JQuery, например, SQL LIKE% value% statement

У меня есть массив с некоторыми значениями. Как я могу искать этот массив с помощью jquery для значения, которое соответствует или близко к нему?

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

Если я хочу искать oo, он должен возвращать foo, fool и cool, потому что эти строки содержат oo.

4b9b3361

Ответ 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
}