2017-01-17 3 views
1

私はJSONにAJAX要求を行うと、応答として、次のコードを取得しています:Javascriptの多次元配列のキーと値

{ 
    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" 
     } 
     ] 
    } 
    ] 
} 

は今、私は自分のJSArrayにこのデータをプッシュ。現在、レスポンスアイテムは1つしかありませんが、さらに多くのアイテムが追加されます。

私は、だから私は、タグ名が'Aflevering2'あるオブジェクトからのデータをご希望のオブジェクト(item > tags > name = 'Aflevering2')

のタグの名に基づいて特定のオブジェクトデータを取得します。

アドバイスはありますか?ありがとう!

+0

は見えるが、問題の要素にアクセスするためにこれまでに試したことを確認できます。あなたのコードを表示してください(エラーがあっても)。 – Tigger

答えて

2

あなたはfilter()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

私は 'v => v.tags.some(k => k.name === 'Aflevering2')'が短縮されたと思いますか?このコードを「フルレングス」に翻訳するにはどうすればよいですか?私はこれを私の警告に入れているので、 'arrow function syntax(=>) 'はES6(esnextオプションを使う)でしか利用できません。そして、私が書くコードを理解したいと思っています:) – Kemagezien

+0

@Kemagezienそれは、それは短縮されていない。 Google for arrowの機能jsと最初の結果は、深くそれを説明します。 – baao

+0

情報ありがとうございました。私は矢印機能に関するいくつかの研究を行いました。しかし、例えば。 Safariは矢印機能をサポートしていません。矢印機能なしでこれを書き直すことは可能ですか? – Kemagezien

関連する問題