2017-08-15 4 views
0

J'ai un tableau d'utilisateurs et chaque utilisateur a deux rôles. L'exemple du tableau est illustré ci-dessous.Comment filtrer les objets javascript avec une expression contenant un tableau avec jmesPath?

[ 
    { 
     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'}, 
     ] 
    } 
] 

Je suis en train de récupérer tous les utilisateurs qui ont un Administrateur rôle à l'aide jmesPath. J'ai essayé [?roles[].name=='Admin'] mais cela donne une valeur null. Est-il possible de le faire avec jmesPath, et si oui pouvez-vous me donner une expression pour cet exemple?

Répondre

0

Vous pouvez obtenir le même résultat avec JavaScript en utilisant simplement:

En supposant que votre tableau est stocké sur les utilisateurs var = [...].

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

Vous pouvez voir this sample with jsBin

+0

Le point entier est de ne pas utiliser le code javascript. –