2017-11-17 13 views
-1

2つの配列を持つjsonファイルがあります。そのうちの1つはネストされています。ネストされた配列から数値を取得し、ネストされていない配列の値を他の関数に送ることができるように、ネストされていない配列の値(id)とマッチさせる必要があります。私はこれを2日連続で把握しようとしており、何が間違っているのか理解できませんでした。任意のポインタやヘルプは高く評価されます。ネストされた配列から特定の値を取得する

私は参照のために私のjsonにデータを持っています。

{ 
    "videos": [ 
    { 
     "id": 1, 
     "title": "Lego!", 
     "created": 1509804047011, 
     "duration": 5, 
     "poster": "./videos/small.png", 
     "video": "./videos/small.mp4" 
    }, 
    { 
     "id": 2, 
     "title": "Big Bunny", 
     "created": 1507804047011, 
     "duration": 62, 
     "poster": "./videos/bunny.png", 
     "video": "./videos/bunny.mp4" 
    }, 
    { 
     "id": 3, 
     "title": "Prufu myndband", 
     "created": 1505904047011, 
     "duration": 3600, 
     "poster": "./videos/16-9.png", 
     "video": "./videos/bunny.mp4" 
    }, 
    { 
     "id": 4, 
     "title": "Prufu myndband með löngum texta sem fer í tvær línur", 
     "created": 1504904047011, 
     "duration": 220, 
     "poster": "./videos/16-9.png", 
     "video": "./videos/bunny.mp4" 
    } 
    ], 

    "categories": [ 
    { 
     "title": "New videos", 
     "videos": [1, 2] 
    }, 
    { 
     "title": "Amazing videos", 
     "videos": [1, 3, 4] 
    }, 
    { 
     "title": "Funny videos", 
     "videos": [2, 3, 4] 
    } 
    ] 
} 

答えて

0

だけでカテゴリを反復やビデオを見つける:

for(const {title, videos} of data.categories){ 
    for(const id of videos){ 
    const video = data.videos.find(v => v.id === id); 
    //do whatever with video 
    } 
} 

代わりにあなただけのネストされたカテゴリに記載されている動画を取得したい場合:

const ids = new Set(data.categories.reduce((res, videos) => res.concat(videos))); 

const result = data.videos.filter(v => ids.has(v.id)); 
+0

ありがとうございました。それはどのようになっているのでしょうか。 –

0

あなたは可能性がありこのような動画の配列には、単にmapと表示されます。

const videoIds = data.videos.map(video => video.id); 
console.log(videoIds) 

これは、ビデオ配列内にすべてidを含む配列を返します。

+0

ありがとう、私はこれを試して使用します。 –

関連する問題