我如何使用 JavaScript“filter
“属性作为过滤器我的 JavaScript 对象?
我一直在阅读以下内容StackOverflow 帖子 https://stackoverflow.com/questions/1694717/javascript-how-to-create-an-object-and-filter-on-those-attributes,并且我处于类似的情况。
我有以下 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
一旦过滤器已经设置?意思是,假设我从上面应用了过滤器,then用户改变主意并希望将他们愿意为汽车支付的最高金额从 40,000 美元增加到 50,000 美元。
我将如何有问题地修改我的过滤器:
filter(function(p) { return p.price <= 40000 }).
to:
filter(function(p) { return p.price <= 50000 }).