jQuery динамично генерирует grep ()

Я использую $ .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 для возврата. Возможно, я показываю, как новичок, который я здесь, но почти было бы хорошо смочь генерировать долгую строку фильтра затем просто, выталкивает его в возврат. Это похоже, как это теперь, возврат должен быть трудно кодирован. Я понимаю, что это, вероятно, просто, но существует очень мало там в сети о том, как сделать такого рода вещь.Заранее спасибо!

1
задан fedorqui 14 August 2013 в 13:30
поделиться

3 ответа

Вы можете искать в массиве следующим образом:

myObject.appJSON = jQuery.grep(myObject.appJSON, function (a) { 
    return $.inArray(a.category, someArray) > -1;
});
2
ответ дан 2 September 2019 в 22:48
поделиться

Я думаю, вы можете повторно выразить совпадение:

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');
0
ответ дан 2 September 2019 в 22:48
поделиться

Вы можете использовать eval () для динамического создания логики grep. Или вы можете создать регулярное выражение, соответствующее всем вашим категориям. Но проще всего создать объект, содержащий ваши категории, и проверить, является ли a.category одной из них.

var categories = {
    "Entertainment": 1,
    "Business":      1
};
myObject.appJSON = jQuery.grep(myObject.appJSON, function (a) { 
    return categories[a.category];
});
0
ответ дан 2 September 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: