使用.map过滤Json

时间:2017-11-15 19:55:00

标签: javascript typescript youtube-api ionic3

我正在尝试过滤此.json以便不显示私有视频。 它适用于youtube频道的应用。 有些视频是私有的,我不想在应用中显示它们。 我需要帮助过滤.json

目前它正在返回一个空的json。如果我删除.map,它会返回完整的视频列表。

getPlayListVideos(listId: string) {
    return this.http.get('https://www.googleapis.com/youtube/v3/playlistItems?key=' + this.apiKey + '&fields=items/snippet/resourceId/videoId,items/snippet/publishedAt,items/snippet/title,items/snippet/thumbnails/high/url&playlistId=' + listId +'&part=snippet,id&maxResults=25')
    .map((res) => {
      return res.json()['items'].filter(item => {
        if(item.snippet.title === 'Private video'){
          return false;
        }
       });
    })
}

1 个答案:

答案 0 :(得分:2)

如果您不想过滤当前项目,则需要返回true。目前您隐式退回虚假或未定义,因为在这种情况下您不会返回任何内容。所以你需要这样做:

if(item.snippet.title === 'Private video'){
    return false;
} else {
    return true;
}

或更好return item.snippet.title !== 'Private video'

奖金格式 - 我个人写这样的全部内容:

  getPlayListVideos(listId: string): any[] {
       return this.http.get('https://www.googleapis.com/youtube/v3/playlistItems?key=' + this.apiKey + '&fields=items/snippet/resourceId/videoId,items/snippet/publishedAt,items/snippet/title,items/snippet/thumbnails/high/url&playlistId=' + listId + '&part=snippet,id&maxResults=25')
              .map(res => res.json()['Items'])
              .map((items: any[]) => items.filter(item => item.snippet.title !== 'Private video'))
  }