☰
副队长JavaScript教程(35)-数组使用小案例
2026/10/27 4:03:26 网站建设 项目流程

点此查看所有教程、项目、源码导航

文章目录

  • 1. 背景
  • 2. 需求说明
  • 3. 完整代码
  • 4. 代码分步解读
  • 5. 运行输出效果
  • 6. 知识点复盘
  • 7. 拓展小练习(自己动手改一改)
  • 8. 小结

1. 背景

之前我们学了数组各个相关知识点,为了加深大家对数组的理解,本篇来使用数组写一个数据统计类案例 —— 学生成绩统计。

这个案例非常实用,在日常开发、后台统计里面经常见到,同时可以把数组遍历、查找、判断、求和、找最大值最小值全部串起来巩固一遍。

用到的知识依旧是我们已经学过的:数组、for 循环、if 判断、数组相关方法。

还是那句话:数组内置方法不用死记硬背,理解它能实现什么效果就可以,真写代码忘记了随时查阅资料。

2. 需求说明

我们有一个班级的学生成绩数组,需要自动完成下面几件统计工作:

  1. 遍历输出每一位同学的成绩
  2. 计算班级总分、平均分
  3. 找出最高分、最低分
  4. 统计及格人数(>=60 分)、不及格人数
  5. 判断是否存在满分 100 分的同学

3. 完整代码

// 班级成绩数组letscoreList=[85,92,56,78,100,66,45,88,73,95];// 定义统计用的变量lettotal=0;// 总分letmaxScore=scoreList[0];// 最高分,初始取第一个成绩letminScore=scoreList[0];// 最低分,初始取第一个成绩letpassCount=0;// 及格人数letfailCount=0;// 不及格人数lethasFullMark=false;// 是否存在满分console.log("===== 学生成绩列表 =====");for(leti=0;i<scoreList.length;i++){letscore=scoreList[i];console.log("第"+(i+1)+"位同学成绩:"+score);// 累加总分total=total+score;// 更新最高分if(score>maxScore){maxScore=score;}// 更新最低分if(score<minScore){minScore=score;}// 判断及格或者不及格if(score>=60){passCount++;}else{failCount++;}// 判断是否是满分if(score===100){hasFullMark=true;}}// 计算平均分,保留2位小数letavg=total/scoreList.length;avg=avg.toFixed(2);console.log("\n===== 班级成绩统计结果 =====");console.log("总分:"+total);console.log("平均分:"+avg);console.log("最高分:"+maxScore);console.log("最低分:"+minScore);console.log("及格人数:"+passCount);console.log("不及格人数:"+failCount);if(hasFullMark){console.log("是否有满分同学:是");}else{console.log("是否有满分同学:否");}

4. 代码分步解读

  1. 先准备好原始数据数组scoreList,存放所有学生成绩。
  2. 提前声明一系列统计变量,用来保存最后需要输出的结果。
  3. 使用普通 for 循环遍历数组,每一轮循环拿到单个学生的成绩。
  4. 在循环内部同步做一系列判断和计算:
    • 不断把成绩加到总分变量上;
    • 和当前最高分、最低分对比,更新记录;
    • 判断分数是否及格,对应人数 + 1;
    • 如果遇到 100 分,标记存在满分。
  5. 循环全部跑完之后,统一打印最终的统计汇总信息。

补充:toFixed(2)作用是保留两位小数,是数字的内置功能,这里直接使用,先不用深挖原理。

5. 运行输出效果

=====学生成绩列表=====第1位同学成绩:85第2位同学成绩:92第3位同学成绩:56第4位同学成绩:78第5位同学成绩:100第6位同学成绩:66第7位同学成绩:45第8位同学成绩:88第9位同学成绩:73第10位同学成绩:95=====班级成绩统计结果=====总分:778平均分:77.80最高分:100最低分:45及格人数:8不及格人数:2是否有满分同学:是

6. 知识点复盘

这个案例还是比较贴近真实开发的数据处理场景:

  • 数组:用来批量存放一组同类型数据(成绩)
  • for 循环遍历:挨个取出数据处理,是批量统计的基础
  • if 分支判断:做条件筛选、对比
  • 数组属性length:获取数据总条数,用来计算平均分

我们前面学的includes也可以用来简化满分判断,给大家一个拓展写法对比看看:

lethasFullMark=scoreList.includes(100);

两种写法效果一样,一种靠循环判断,一种直接使用数组内置方法。

7. 拓展小练习(自己动手改一改)

大家可以基于这个代码自行修改,巩固练习:

  1. 新增需求:统计 90 分以上优秀的人数
  2. 新增需求:找出第一个不及格的成绩,输出它的下标(搭配 indexOf)
  3. 把成绩从小到大排序后再输出(搭配 sort)

8. 小结

像这种数组批量统计,在后台管理系统里面随处可见:订单统计、商品销量统计、用户数据汇总,底层逻辑和这个成绩案例是一模一样的。
数组系列的实战和知识点到这里就全部结束了。
下一章,我们正式开启函数的学习,把前面所有 “内置方法” 背后的原理揭开。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询