2017-01-17 6 views
1

ich eine JSON einen AJAX-Request tue und folgenden Code als Antwort bekommen:Javascript mehrdimensionale Array-Schlüsselwert

{ 
    total: "1", 
    items: [ 
    { 
     id: 43, 
     title: "ThisIsTheTitle", 
     promoted: false, 
     sticky: false, 
     weight: 10, 
     created: { 
     timestamp: 1482054, 
     formatted: "17/01/2017" 
     }, 
     url: "http://...", 
     airdate: { 
     timestamp: 1484980, 
     formatted: "17/01/2017" 
     }, 
     video: { 
     id: 43, 
     number_of_views: 1, 
     duration: { 
      seconds: 50, 
      formatted: "00:00" 
     }, 
     required_login: false 
     }, 
     program: { 
     id: 25, 
     url: "http://...", 
     title: "ProgrammaTitel" 
     }, 
     image: { 
     uri: "public://...", 
     full: "http://..." 
     }, 
     tags: [ 
     { 
      id: "4", 
      name: "Map" 
     }, 
     { 
      id: "7", 
      name: "Aflevering2" 
     } 
     ] 
    } 
    ] 
} 

Jetzt schiebe ich diese Daten in meinem eigenen JSArray. Beachten Sie, dass es nur noch 1 Antwort-Item gibt, aber weitere werden hinzugefügt.

Ich mag spezifische Objekt-Daten auf den Namen eines Tags des(item > tags > name = 'Aflevering2')

Objekts basierten abrufen So würde ich die Daten aus dem Objekt, wo sie den Tag-Name 'Aflevering2' ist.

Irgendwelche Ratschläge? Vielen Dank!

+0

Sieht aus wie Sie in der Lage sind, die Daten zu bekommen (weil Sie es gezeigt haben), aber Lass uns sehen, was du bisher versucht hast, auf das fragliche Element zuzugreifen. Zeigen Sie bitte Ihren Code (auch bei Fehlern). – Tigger

Antwort

2

Sie können die Elemente mit einer Kombination von filter() finden und some():

obj.items.filter(v => v.tags.some(k => k.name === 'Aflevering2')); 

let obj = { 
 
    total: "1", 
 
     items: [ 
 
    { 
 
     id: 43, 
 
     title: "ThisIsTheTitle", 
 
     promoted: false, 
 
     sticky: false, 
 
     weight: 10, 
 
     created: { 
 
      timestamp: 1482054, 
 
      formatted: "17/01/2017" 
 
     }, 
 
     url: "http://...", 
 
     airdate: { 
 
      timestamp: 1484980, 
 
      formatted: "17/01/2017" 
 
     }, 
 
     video: { 
 
      id: 43, 
 
      number_of_views: 1, 
 
      duration: { 
 
       seconds: 50, 
 
       formatted: "00:00" 
 
      }, 
 
      required_login: false 
 
     }, 
 
     program: { 
 
      id: 25, 
 
      url: "http://...", 
 
      title: "ProgrammaTitel" 
 
     }, 
 
     image: { 
 
      uri: "public://...", 
 
      full: "http://..." 
 
     }, 
 
     tags: [ 
 
      { 
 
       id: "4", 
 
       name: "Map" 
 
      }, 
 
      { 
 
       id: "7", 
 
       name: "Aflevering2" 
 
      } 
 
     ] 
 
    } 
 
] 
 
} 
 

 
let items = obj.items.filter(v => v.tags.some(k => k.name === 'Aflevering2')); 
 
console.log(items);

+0

Ich nehme an, v => v.tags.some (k => k.name === 'Aflevering2') 'wird verkürzt geschrieben? Wie kann ich diesen Code in 'Full-Length' übersetzen? weil ich das in meine Warnungen bekomme: 'arrow function syntax (=>) 'ist nur in ES6 verfügbar (benutze esnext option)' und ich würde gerne den Code verstehen, den ich schreibe :) – Kemagezien

+0

@Kemagezien es ist eine Pfeilfunktion, es ist nicht verkürzt. Google für Pfeilfunktion js und das erste Ergebnis wird es tief erklären. – baao

+0

danke für Informationen Ich habe einige Nachforschungen zu den Pfeilfunktionen gemacht. Jedoch z.B. Safari unterstützt keine Pfeilfunktionen. Kann man das ohne Pfeilfunktion umschreiben? – Kemagezien