2017-08-15 2 views
0

Ich habe eine Reihe von Benutzern und jeder Benutzer hat ein paar Rollen. Das Beispiel des Arrays ist unten gezeigt.Wie kann ich JavaScript-Objekte mit einem Ausdruck filtern, der ein Array mit jmesPath enthält?

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

Ich versuche, alle Benutzer zu erhalten, die sich mit jmesPath eine Admin Rolle. Ich habe versucht [?roles[].name=='Admin'], aber dies gibt einen null Wert. Ist es möglich, dies mit jmesPath zu tun, und wenn ja, kannst du mir einen Ausdruck für dieses Beispiel geben? mit

Antwort

0

Sie können das gleiche Ergebnis mit einfacher JavaScript erhalten:

Vorausgesetzt, dass Ihr Array auf var users = gespeichert wird [...].

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

Sie sehen this sample with jsBin

+0

Der springende Punkt ist es, JavaScript-Code nicht zu verwenden. –

Verwandte Themen