首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用jmesPath中包含数组的表达式过滤javascript对象?

如何使用jmesPath中包含数组的表达式过滤javascript对象?
EN

Stack Overflow用户
提问于 2017-08-16 07:24:56
回答 2查看 1.2K关注 0票数 1

我有一组用户,每个用户都有几个角色。该数组的示例如下所示。

[
    {
        id: 1,
        username: 'john',
        roles: [
            {id: 500, name: 'Admin'},
            {id: 501, name: 'Owner'}
        ]
    },
    {
        id: 2,
        username: 'joe',
        roles: [
            {id: 500, name: 'Admin'},
        ]
    },
    {
        id: 3,
        username: 'june',
        roles: [
            {id: 502, name: 'User'},
        ]
    }
]

我正在尝试通过使用jmesPath获取所有具有管理员角色的用户。我尝试过[?roles[].name=='Admin'],但这给出了一个null值。用jmesPath可以做到这一点吗?如果可以,你能给我这个例子的表达式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-16 08:05:33

我使用了这个例子和你的数据

http://jmespath.org/examples.html#filtering-and-selecting-nested-data

我让它用这个表达式工作

[?roles[?name=='Admin']]
票数 3
EN

Stack Overflow用户

发布于 2017-08-16 07:48:21

您可以使用以下命令使用普通JavaScript获得相同的结果:

假设您的数组存储在var users = ....

users.filter((i)=> i.roles.some((s) => s.name === "Admin"))

你可以看到this sample with jsBin

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45702945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档