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对象,而不获取整个路径对象。