如何编写reduce回调函数统计数组中JavaScript和Python开发者数量
原代码问题说明
你写的代码存在几处核心错误,无法得到预期结果:
- reduce回调没有接收累计器、当前遍历项这两个必要参数
- 错误直接访问数组本身的
language属性(数组不存在该属性,只有数组内的单个开发者对象才有language字段) - 初始值设置错误:要求最终返回对象,初始值应该是带两个计数键、初始值为0的对象,而不是字符串
'python' - 条件判断逻辑完全不符合需求,既不能同时识别两种语言,也无法完成计数累加
正确实现代码
const devLanguageCounts = developersArray.reduce((acc, curr) => { if (curr.language === 'javascript') { acc.JavaScript++ } else if (curr.language === 'python') { acc.python++ } // 每次遍历必须返回累计器,供下一轮计算使用 return acc // 初始值:两个语言的计数默认从0开始 }, { JavaScript: 0, python: 0 }) console.log(devLanguageCounts) // 输出:{ JavaScript: 4, python: 3 } 完全符合要求
内容的提问来源于stack exchange,提问作者Benfro21
相关产品推荐
相关产品推荐

