继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

自己摸索了两种方法,希望各位指点。

lwxlllx
关注TA
已关注
手记 3
粉丝 1
获赞 1

因为之前用的检索“:”的位置加后面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);
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP