Это не очень гибко в нынешнем виде, но что-то подобное может соответствовать вашим потребностям: Рабочий пример
функция фильтра для хранилища данных
// dataStore = JSON object, filter = filter obj
function filterStore(dataStore, filter) {
return $(dataStore).filter(function(index, item) {
for( var i in filter ) {
if( ! item[i].toString().match( filter[i] ) ) return null;
}
return item;
});
}
использование
// result contains array of objects based on the filter object applied
var result = filterStore( store, filter);
хранилище данных в том виде, в котором оно у меня есть
var store = [
{"brand": "Lg",
"productname": "Microwave",
"price": 200},
{"brand": "Samsung",
"productname": "Digi cam",
"price": 120},
{"brand": "Sony",
"productname": "Lcd TV",
"price": 3000},
{ "brand": "LG",
"productname": "Flat TV",
"price": 299},
{"brand": "Samsung",
"productname": "Lcd TV",
"price": 700},
{"brand": "LG",
"productname": "Plasma TV",
"price": 3000},
{"brand": "sony",
"productname": "Plasma TV",
"price": 12929}
];
фильтр объектов, которые я использовал
// RegExp used could most likely be improved, definitely not a strong point of mine :P
var filter = {
"brand": new RegExp('(.*?)', 'gi'),
"productname": new RegExp('(.*?)', 'gi'),
"price": new RegExp('299', 'gi')
};
var filter2 = {
"brand": new RegExp('LG', 'gi'),
"productname": new RegExp('(.*?)', 'gi'),
"price": new RegExp('(.*?)', 'gi')
};
var filter3 = {
"brand": new RegExp('Samsung', 'gi'),
"productname": new RegExp('(.*?)', 'gi'),
"price": new RegExp('(.*?)', 'gi')
};
var filter4 = {
"brand": new RegExp('(.*?)', 'gi'),
"productname": new RegExp('Plasma TV', 'gi'),
"price": new RegExp('(.*?)', 'gi')
};