我有以下JavaScript数组的房地产家庭对象:
var json = {
'homes': [{
"home_id": "1",
"price": "925",
"sqft": "1100",
"num_of_beds": "2",
"num_of_baths": "2.0",
}, {
"home_id": "2",
"price": "1425",
"sqft": "1900",
"num_of_beds": "4",
"num_of_baths": "2.5",
},
// ... (more homes) ...
]
}
var xmlhttp = eval('(' + json + ')');
homes = xmlhttp.homes;
Run Code Online (Sandbox Code Playgroud)
我想要做的是能够对对象执行过滤器以返回"home"对象的子集.
例如,我想基于对能够过滤:price,sqft,num_of_beds,和num_of_baths.
问题:如何在JavaScript中执行某些操作,如下面的伪代码:
var newArray = homes.filter(
price <= 1000 &
sqft >= 500 &
num_of_beds >=2 &
num_of_baths >= 2.5 );
Run Code Online (Sandbox Code Playgroud)
注意,语法不必与上面完全相同.这只是一个例子.
我想根据对象的属性选择对象,但不总是相同的属性.换一种说法:
arr = [
{ name: "joe", age21: 1 },
{ name: "nick", age21: 0 },
{ name: "blast", age21: 1 }
];
arr.filter(function(item) {
return (item.name === "nick" && item.age21 === 1);
});
Run Code Online (Sandbox Code Playgroud)
但有时我只想过滤名称,例如:
arr.filter(function(item) {
return (item.name === "nick");
});
Run Code Online (Sandbox Code Playgroud)
我想要做的是概括这一点,以便可以将参数列表传递给函数.我想出了以下内容,但它很慢,我想知道是否有更好的方法:
filterParams = function(arr, params) {
var new_array = arr.filter(function(item) {
var select = 1
for(obj in params) { //create the filter criteria based on varying set of parameters
var select = select && params[obj] === item[obj];
} …Run Code Online (Sandbox Code Playgroud)