Можете ли вы предложить мне алгоритм фильтрации данных.
Я использую javascript и пытаюсь выписать функцию фильтра, которая фильтрует массив данных. У меня есть массив данных и массив фильтров, поэтому для применения каждого фильтра к любым данным я написал 2 для петли
foreach(data)
{
foreach(filter)
{
check data with filter
}
}
это не правильный код, но вкратце то, что делает моя функция, проблема в том, что это занимает огромное количество времени, может кто-нибудь предложить лучший метод.
Я использую библиотеку Mootools, а массив данных - это массив JSON
Данные и фильтр
Данные - это массив JSON, скажем, пользователя, поэтому он будет
data = [{"name" : "first", "email" : "first@first", "age" : "20"}.
{"name" : "second", "email" : "second@second", "age" : "21"}
{"name" : "third", "email" : "third@third", "age" : "22"}]
Массив фильтров - это в основном самоопределяемый класс для различных полей данных
alFilter[0] = filterName;
alFilter[1] = filterEmail;
alFilter[2] = filterAge;
Поэтому, когда я вхожу в первый цикл for, я получаю один объект JSON (первая строка) в приведенном выше случае.
Когда я ввожу второй цикл for (фильтр filters), у меня есть класс фильтра, который извлекает точное поле, с которым будет работать текущий фильтр, и проверяет фильтр с соответствующим полем данных.
Так что в моем примере
foreach(data)
{
foreach(filter)
{
//loop one - filter name
// loop two - filter email
// loop three - filter age
}
}
когда второй цикл заканчивается, я устанавливаю флаг, обозначающий, были ли данные отфильтрованы или нет, и в зависимости от этого данные отображаются.