例如,我有一个Paths对象
var Paths = {
path1: {
name: 'method1',
get: {
name: 'param1',
id: 1
},
post: {
name: 'param2',
id: 2
}
},
path2: {
name: 'method2',
get: {
name: 'param1',
id: 3
},
post: {
name: 'param2',
id: 4
}
}
};
我想根据id获取对象。
我试过这样做_.find(Paths, {get:{id:1}})
但是这里的id也可以在post对象中。
我需要一些帮助来解决 lodash 中的这个问题。
答案 0 :(得分:1)
在对象中查找_.pickBy
var res = _.pickBy(Paths, function(path) {
return path.get.id === 1 || path.post.id === 1;
});
表示未知密钥
var res = _.pickBy(Paths, function(path) {
return _.chain(path)
.values()
.some(function(val) {
return _.get(val, 'id') === 1;
})
.value();
});
答案 1 :(得分:0)
实际上,您的代码很好,因为它只能在get
内查找,而不是post
。 lodash还有matchesProperty iteratee,在这种情况下,可以这样做:
_.find(Paths, ["get.id", 1]);
此外,您可以按自定义功能进行过滤:
_.find(Paths, function(o) { return o.get.id == 2 || o.post.id == 2; });