我们首先从一个题目说起,故事背景是某班期末考试成绩出来了,要求你统计考试分数,并打印出来,要求格式为:
XXXX年XX月XX日 星期X--班级总分为:XX班级平均分为(保留整数):XX
成绩数据为:"小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76"
ok,我们来分析一下题目要求,首先看到前面肯定要用到JS中的Date对象了,但这里是星期X,而getDay()返回的是数字,故就需要我们先写一个数组来做一个转化;如下所示:
var weekday = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
“--” :这里我们既可以用join()函数来拼接,但我们可以偷波懒,直接打印出来哈哈哈,然后总分和平均分我们可以用for循环来处理,但这里我们注意到成绩数据并不是常规的数字,而是带有姓名的字符串,那这就需要我们先对数据进行预处理了,那如何处理呢?我也想知道啊!!!,好了好了不闹了,我们注意到每个成绩后都有“;”那我们就可以用JS中的split()函数,对分号进行分割,这样就生成如图所示的数组:
生成数组后就好处理了,先定义一个sum为0,再用for循环把数组中每个成绩取出来进行求和,取平均即可,这里取出每个成绩当然有很多方法了, 我这里用了一个substr(3,2),因为每个成绩都是从第三个开始且长度为二,代码如下:
for (var i = 0; i < sourceArr.length; i ++) {
sum += parseInt(sourceArr[i].substr(3,2)); }
document.write("--班级总分为:" + sum);
document.write(",班级平均分为(保留整数):" + Math.round(sum/sourceArr.length))
这样到这里,整个题目也就over了,附上完整代码:
<!DOCTYPE HTML>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>let's do it</title>
<script type="text/javascript">
var weekday = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
var date=new Date();
var b1=date.getFullYear() //2021
var b2=date.getMonth() //11
var b3=date.getDate() //26
var b4=weekday[date.getDay()]
document.write(b1+"年"+b2+"月"+b3+"日 "+b4)
//成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦
var sorceStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var sourceArr = sorceStr.split(";");
//从数组中将成绩撮出来,然后求和取整,并输出。
var score = new Array();
var sum = 0;
for (var i = 0; i < sourceArr.length; i ++) {
sum += parseInt(sourceArr[i].substr(3,2));}
document.write("--班级总分为:" + sum);
document.write(",班级平均分为(保留整数):" + Math.round(sum/sourceArr.length))
</script>
</head>
<body>
</body>
</html>
看完能厚脸皮要个赞不