如何根据键名累加对象对应属性值 实现分数按等级统计计数
分数等级统计实现方案
实现思路
- 遍历所有分数,按照给定规则匹配每个分数对应的等级
- 匹配成功后将统计对象对应等级的计数+1
- 不符合规则的分数(如本题中的100分)不做统计
代码实现(JavaScript)
方法1:使用数组reduce方法(推荐,更符合函数式编程习惯)
// 原始分数数组 const scores = [50, 50, 60, 70, 80, 90, 90, 100]; // 初始统计对象 const initialCounter = { A: 0, B: 0, C: 0, D: 0 }; // 统计逻辑 const gradeCounter = scores.reduce((counter, currentScore) => { if (currentScore >= 90 && currentScore < 100) { counter.A++; } else if (currentScore >= 80 && currentScore < 90) { counter.B++; } else if (currentScore >= 60 && currentScore < 80) { counter.C++; } else if (currentScore >= 0 && currentScore < 60) { counter.D++; } return counter; }, initialCounter); console.log(gradeCounter); // 输出结果:{ A: 2, B: 1, C: 2, D: 2 }
方法2:使用普通for循环实现
const scores = [50, 50, 60, 70, 80, 90, 90, 100]; const gradeCounter = { A: 0, B: 0, C: 0, D: 0 }; for (let i = 0; i < scores.length; i++) { const score = scores[i]; if (score >= 90 && score < 100) gradeCounter.A++; else if (score >= 80) gradeCounter.B++; else if (score >= 60) gradeCounter.C++; else if (score >= 0) gradeCounter.D++; } console.log(gradeCounter); // 输出结果:{ A: 2, B: 1, C: 2, D: 2 }
注意事项
- 按照题目给定的等级规则,100分不属于任何等级,因此不会被统计。如果需要将100分计入Grade A,只需将A等级的判断条件修改为
currentScore >= 90 && currentScore <= 100即可,修改后A的统计结果为3。
内容的提问来源于stack exchange,提问作者Sweet Caramel
相关产品推荐
相关产品推荐

