因为之前用的检索“:”的位置加后面scoreStr.substr(first+1,2),来获取元素,但是想到有人100分怎么办,因此将后面的索取改为了另外一个变量second,由获取“;”来获取,这样即时100分也可以获取,只需要解决最后一个成绩没有“;”怎么办,这就可以利用.length来获取。不过分隔是最简单的方法。
//通过javascript的日期对象来得到当前的日期,并输出。
var date=new Date();
var weekday=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
var d=date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日"+weekday[date.getDay()];
document.write(d+":<br />");
//成绩是一长窜的字符串不好处理,找规律后分割放到数组里更好操作哦
var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
//定义了一些变量,分别是开始的下标,结束的下标,成绩总成绩和人数
var start=0;
var end=0;
var sum=0;
var i=0;
var score=0;
/*写一个循环,利用当最后一个“;”和“:”被检索后first为-1的特性,做判断,当first为-1时跳出循环,当second为-1的时候做最后一次成绩累加。*/
while(true){
first=scoreStr.indexOf(":",start);
second=scoreStr.indexOf(";",end);
if(first<0){
break;
}else if(second>0){
score=parseInt(scoreStr.substr(first+1,second+1));
sum=sum+score;
i++;
start=first+1;
end=second+1;
}else{
score=parseInt(scoreStr.substr(first+1,(scoreStr.length-1)));
sum=sum+score;
i++;
break;
}
}
document.write(sum+"<br />"+(sum/i));
下面是分隔的方法
var date=new Date();
var weekday=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
var d=date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDay()+"日"+weekday[date.getDay()];
document.write(d+":<br />");
var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
//用“;”分割成“名字:成绩”这样的数组。
var scoreName=scoreStr.split(";");
var score;
var sum=0;
/*用“:”来分割第一次分割得到数组,获取新的数组,新数组的第二位就是成绩然后把他取出来转化成数字就可以运算了。*/
for(var i=0;i<scoreName.length;i++){
score=scoreName[i].split(":");
sum=sum+parseInt(score[1]);
}
document.write(sum+"<br />"+sum/scoreName.length);