如何使用reduce函数统计GitHub用户带有语言标识的仓库总数及代码问题修复
解决GitHub API获取带语言标识仓库总数的问题
嘿,我一眼就瞅出你代码里的问题啦!你现在得到的那串奇怪的拼接结果,根源是reduce的逻辑用错了——你把语言名称直接加到初始值为0的total上,JS里数字和字符串相加会自动做隐式转换变成字符串拼接,所以最后才会出现0CSSJavaScript...这种不想要的结果。
要统计带语言标识的仓库总数,其实很简单:只要遇到仓库的language字段存在时,把计数加1就行,而不是把语言名称加进去。这里给你修正后的代码:
const url = "https://api.github.com/users/oyerohabib/repos?per_page=50"; const fetchRepos = async () => { // 记得给变量加const声明,别不小心用了全局变量哦 const response = await fetch(url); const data = await response.json(); const repoCountWithLanguage = data.reduce((total, repo) => { // 仓库有language标识就把计数+1,否则保持原数值 return repo.language ? total + 1 : total; }, 0); console.log(repoCountWithLanguage); // 这里就能输出你想要的13啦 }; fetchRepos();
顺便提个小细节:你原来的代码里response和data没加变量声明,会变成全局变量,这是个容易踩的小坑,所以我帮你加上了const来限定作用域。
内容的提问来源于stack exchange,提问作者coderboy
相关产品推荐
相关产品推荐

