我正在尝试过滤此.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;
}
});
})
}
答案 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'))
}