使用包含对嵌套对象的引用的查询过滤对象

时间:2013-02-24 21:14:19

标签: javascript filtering underscore.js lodash

我需要编写一个过滤函数,允许我通过嵌套对象进行查询,如下所示:

var data = [
             { twitter: { id: 1, name: "Bob" } },
             { twitter: { id: 2, name: "Jones" } }
           ],
    query = { 'twitter.id': 1 };

# Perform filter using data and query variables
var search = …

console.log(search);
> ["0"]

过滤器应返回与查询匹配的索引数组。

我目前在http://jsbin.com/umeros/2/edit没有嵌套对象支持的情况下工作。

但是,我希望能够查询嵌套对象,例如上面看到的query

1 个答案:

答案 0 :(得分:1)

使用this answer中的ref功能,您的过滤器应如下所示:

var search = _.filter(_.keys(data), function (key) {
    var obj = data[key];
    return _.every(query, function (val, queryKey) {
        return ref(obj, queryKey) === val;
    });
});