所以我试图使用以下模板过滤我的收藏:
// The `_.matchesProperty` iteratee shorthand.
_.filter(users, ['active', false]);
// => objects for ['fred']
所以说例如我有以下对象:
{
name: 'Marc'
user: {
division:{
id: 1
}
},
status:0
}
在我的数组中,我有很多不同的实例。
现在我想过滤我的数组,只包含status = 1
和user.division.id = 1
你会认为你会输入这样的东西:
_.filter(myArr, ['user.division.id', 1], ['status', 1])
然而,这不起作用:(
我也尝试过:
_.filter(myArr, ['user.division.id', 12,'status', 1])
同样的结果。
这两个都只评估第一个表达式(即):
_.filter(myArr, ['user.division.id', 1])
似乎永远不会评估第二个表达式。
所以我的问题是你怎么能用多场比赛做到这一点?
答案 0 :(得分:0)
好的,因为@valz指出我无法在matchesProperty
中使用多个键/值
所以我做的是以下内容:
var filters = {'user.division.id': 1, status:1}
_.forEach(filters, function(value, key) {
data = _.filter(data, [key,value]);
});
答案 1 :(得分:0)
_.filter
要么接受:
因此,如果要使用基于平坦路径的过滤器,可以将其压缩到嵌套对象中以利用(3):
function filterDeep(collection, filters) {
return _.filter(
collection,
_.zipObjectDeep(_.keys(filters), _.values(filters)),
);
}