JS如何实现统计2019年编程语言热度的getLanguagesStatistic函数
问题解答
- 解构不是实现该功能的必须选项,它只是简化属性读取的语法糖,不用解构完全可以正常实现需求。
- 你已经完成了年份过滤的核心前置逻辑,后续追加
reduce方法做计数统计即可,两种实现方案如下:
无解构实现版本
const getLanguagesStatistic = (feedbacks) => { return feedbacks .filter(f => f.year === 2019) .reduce((statObj, currentComment) => { const lang = currentComment.language // 存在对应语言则计数+1,不存在则初始化为1 statObj[lang] = (statObj[lang] || 0) + 1 return statObj }, {}) // 初始值为空统计对象 };
用解构简化的版本
const getLanguagesStatistic = (feedbacks) => { return feedbacks .filter(({ year }) => year === 2019) // 解构直接取year字段过滤 .reduce((statObj, { language }) => { // 解构直接取language字段统计 statObj[language] = (statObj[language] || 0) + 1 return statObj }, {}) };
两种方案跑你提供的测试数据,都能得到预期输出{ C: 1, JavaScript: 2 }。
内容的提问来源于stack exchange,提问作者Ars
相关产品推荐
相关产品推荐

