代码之家  ›  专栏  ›  技术社区  ›  Sahand Javid

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

  •  1
  • Sahand Javid  · 技术社区  · 7 年前

    我有一组用户,每个用户都有几个角色。阵列示例如下所示。

    [
        {
            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

    2 回复  |  直到 6 年前
        1
  •  3
  •   diedu    7 年前

    我对这个例子和你的数据做了一些处理

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

    我用这个表达式实现了

    [?roles[?name=='Admin']]
    
        2
  •  0
  •   José Quinto Zamora    7 年前

    使用纯JavaScript可以获得相同的结果:

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

    你可以看到 this sample with jsBin