Как использовать атрибут JavaScript "filter
" в качестве фильтра для моего объекта JavaScript?
Я читал следующее сообщение StackOverflow и нахожусь в аналогичной ситуации.
У меня есть следующий объект JavaScript:
{
'cars' :
[{
"car_id" : "1",
"price" : "42999",
"make_id" : "050",
"year_built" : "2007",
"color_id" : "832"
},
..........
]}
Я использую JQuery для отображения элементов управления, чтобы люди могли фильтровать по: цене, марке, год выпуска, цвету
В этом другом посте я могу использовать следующий код:
// if using an old browser, define the 'filter' attribute
if (!Array.prototype.filter)
{
Array.prototype.filter = function(fun /*, thisp*/)
{
var len = this.length >>> 0;
if (typeof fun != "function")
throw new TypeError();
var res = new Array();
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this)
{
var val = this[i]; // in case fun mutates this
if (fun.call(thisp, val, i, this))
res.push(val);
}
}
return res;
};
}
тогда для выполнения фактического фильтра я могу сделать:
result = cars.
filter(function(p) { return p.price >= 15000 }).
filter(function(p) { return p.price <= 40000 }).
filter(function(p) { return p.year_built >= 2000 }) etc
Что я не понимаю, так это как мне использовать мои элементы управления JQuery для динамического изменения filter
после того, как фильтр уже установлен? То есть, допустим, я применил фильтр сверху , затем пользователь передумает и хочет увеличить максимальную сумму, которую он готов заплатить за автомобиль, с 40 000 до 50 000 долларов.
Как бы я мог изменить мой фильтр из:
filter(function(p) { return p.price <= 40000 }).
до:
filter(function(p) { return p.price <= 50000 }).