有没有考满分的情况 也就是三位数的时候??
跟多少位数没关系,你像这样分隔
var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76"; var scoreA = scoreStr.split(';'); var sum = 0; for(var i = scoreA.length; i--;){ sum += Number(scoreA[i].split(':')[1]); } console.log(sum);
想了下。用sub提取不如用split二次分割“:”。取第二个字符串转化成整数来写。
不论是.substr()h还是.substring()都可以从第三位开始提取成绩,后面的范围可以不填,默认到底。
使用提取出来的不论是2位数还是3位数。全部加起来除以.length数组长度。然后.floor()向下取整。得到平均值
我觉得分数三位数没什么。怕名字超过2位数啊。代码还需要相应调整。
var scoreStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var myarr = scoreStr.split(";");
document.write(myarr[0]+"<br/>");//验证是否分割正确
var sum=0,avg=0; //初始化变量
// 第一版本:不够灵活的方法,遇到分数为3位数的情况下会计算错误
/*for(var i=0;i<myarr.length;i++) {
sum=sum+ parseInt(myarr[i][3])*10 + parseInt(myarr[i][4]);
avg=Math.round(sum/myarr.length);
}*/
//第二版本,不管分数有几位都可以计算,不会出错
for(var i=0;i<myarr.length;i++)
{
sum=sum+ parseInt(myarr[i].substring(myarr[0].indexOf(":")+1)+"<br>");
avg=Math.round(sum/myarr.length);
}
document.writeln(sum+"<br/>")
document.writeln(avg+"<br/>")