按多个属性过滤集合

时间:2014-03-17 17:08:27

标签: javascript backbone.js filter underscore.js

我正在使用下划线的过滤器方法来检索集合中需要的模型。到目前为止,这是我的代码:

search = {'name':'Jordan', 'country':'Brazil'};

var people = this.filter(function(person){

    return person.get('name') == search['name']
    && person.get('country') == search['country'];
});

我的问题是,我不知道我将在搜索对象中收到多少个键/值对。一个简单的解决方案是这样的:

search = {'name':'Jordan', 'country':'Brazil'};

var people = this.filter(function(person){

    for(var key in search)
    {
        if(search.hasOwnProperty(key)) return person.get(key) == search[key];
    }
});

但当然它不起作用。我该怎么办?

编辑:

我在搜索对象中获得的键不一定是我正在过滤的模型的属性。我可能会收到search = {'name':'Jordan', 'country':'Brazil', 'parentName': 'Steve'};

因此,其中一个过滤条件为Parents.byID(person.get('parentID')).get('name') == search['parentName'];

1 个答案:

答案 0 :(得分:0)

解决了这个问题:

var select = true;

for(var key in search)
{
    if(search.hasOwnProperty(key))
    {
        select = (person.get(key) == search[key]) ? true : false ;
    }

    if(select == false) break;
}

return select;
相关问题