Javascript 如何在嵌套对象中找到具有特定属性的对象
例如,我有一个路径对象Javascript 如何在嵌套对象中找到具有特定属性的对象,javascript,collections,filter,lodash,Javascript,Collections,Filter,Lodash,例如,我有一个路径对象 var Paths = { path1: { name: 'method1', get: { name: 'param1', id: 1 }, post: { name: 'param2', id: 2 } }, path2: { name: 'method2
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(路径,{get:{id:1}})
,但这里id也可以在post对象中
我需要一些帮助来解决lodash中的这个问题实际上,您的代码很好,因为它只在
get
中查看,而不是post
。lodash还有MatcheProperty iteratee,在这种情况下,可以通过以下方式完成:
_.find(Paths, ["get.id", 1]);
此外,您还可以按自定义函数进行筛选:
_.find(Paths, function(o) { return o.get.id == 2 || o.post.id == 2; });
实际上,您的代码很好,因为它只在
get
中查看,而不是post
。lodash还有MatcheProperty iteratee,在这种情况下,可以通过以下方式完成:
_.find(Paths, ["get.id", 1]);
此外,您还可以按自定义函数进行筛选:
_.find(Paths, function(o) { return o.get.id == 2 || o.post.id == 2; });
要在对象中查找,请使用
。.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();
});
要在对象中查找,请使用
。.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();
});
你想要什么输出?你想要什么输出?如果我搜索id“2”,它不在get中,但在post中可用。我应该能够找到与id匹配的路径。如果我搜索id“2”,它不在get中,但在post中可用。我应该能够找到与id匹配的路径。
.find(路径,{:{id:1})
我想要这样的东西。这不仅仅是关于获取或发布,它可以是任何键。谢谢你的建议。@PunithMithra.pickBy(路径,{get:{id:1}})
同样有效。我怎样才能只获取get/post对象,而不是整个路径对象。.find(路径,{:{id:1})
我想要这样的东西。这不仅仅是关于获取或发布,它可以是任何键。谢谢你的建议。@PunithMithra\uu1.pickBy(路径,{get:{id:1}})
同样有效。如何只获取get/post对象,而不获取整个路径对象。