相关疑难解决方法(0)

Javascript:如何根据属性过滤对象数组?

我有以下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)

注意,语法不必与上面完全相同.这只是一个例子.

javascript jquery

424
推荐指数
11
解决办法
65万
查看次数

如何使用可变参数过滤javascript对象数组

我想根据对象的属性选择对象,但不总是相同的属性.换一种说法:

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)

javascript filter

13
推荐指数
1
解决办法
3万
查看次数

标签 统计

javascript ×2

filter ×1

jquery ×1