Я использую $ .grep () для задержки ряда результатов JSON как так:
myObject.appJSON = jQuery.grep(myObject.appJSON, function (a) {
return a.category == "Entertainment";
});
и это хорошо работает. Но то, что я действительно хочу сделать в конечном счете, имеют несколько флажков так, чтобы это я мог отфильтровать на нескольких разных вещах. Я понимаю, чтобы сделать это, я могу просто сделать что-то как:
myObject.appJSON = jQuery.grep(myObject.appJSON, function (a) {
return (a.category == "Entertainment" && a.category == "Business");
});
Но мой реальный вопрос здесь состоит в том, как иметь, это происходит динамично, таким образом, я могу по существу создать строку функций grep для возврата. Возможно, я показываю, как новичок, который я здесь, но почти было бы хорошо смочь генерировать долгую строку фильтра затем просто, выталкивает его в возврат. Это похоже, как это теперь, возврат должен быть трудно кодирован. Я понимаю, что это, вероятно, просто, но существует очень мало там в сети о том, как сделать такого рода вещь.Заранее спасибо!
Вы можете искать в массиве следующим образом:
myObject.appJSON = jQuery.grep(myObject.appJSON, function (a) {
return $.inArray(a.category, someArray) > -1;
});
Я думаю, вы можете повторно выразить совпадение:
var filter = function(categories) {
var obj = [];
$.each(categories.split(' '), function(cat) {
obj.push(jQuery.grep(myObject.appJSON, function (a) {
return cat.test(a.category);
}));
});
return obj;
}
var filtered_array = filter('Entertainment Business');
Вы можете использовать eval ()
для динамического создания логики grep. Или вы можете создать регулярное выражение, соответствующее всем вашим категориям. Но проще всего создать объект, содержащий ваши категории, и проверить, является ли a.category
одной из них.
var categories = {
"Entertainment": 1,
"Business": 1
};
myObject.appJSON = jQuery.grep(myObject.appJSON, function (a) {
return categories[a.category];
});