我具有此功能,用于获取选定类别的新闻。首先进行if case测试,确定类别是否确实在类别的数组中,以及是否不是'All'
类型,然后将类别的新闻推送到getNewsByCategory
中。第二个if case测试类别是否为'All'类型,并将所有类别的新内容推送到getNewsByCategory
中。
如果您在两种情况下都注意到有相同的代码,我想对其进行优化
getNewsByCategory(category) {
const getNewsByCategory = [];
if (this.newsCategory) {
this.newsCategory.forEach(element => {
if (element.category === category && category !== 'All') {
element.news.filter(n => {
getNewsByCategory.push(n);
});
} else if (category === 'All') {
element.news.filter(n => {
getNewsByCategory.push(n);
});
}
});
return getNewsByCategory;
}
}
答案 0 :(得分:2)
这是这两个if
的组合:
if (element.category === category || category === 'All')
答案 1 :(得分:1)
尝试使用reduce函数,我认为您正在误用filter函数,因为它应该与返回的布尔值一起使用,以便创建仅包含以下值的新数组符合条件。
另外,您可以在push函数中使用散布运算符(...)来推送所有element.news。
无论如何:
getNewsByCategory(category) {
if (this.newsCategory) {
return this.newsCategory.reduce(
(newsByCategory, element) => (element.category === category || category === 'All') && newsByCategory.push(...element.news),
[]
);
}
}