问答详情
源自:7-23 编程练习

整块看不懂,求详细讲解,谢谢

var sourceArr = sorceStr.split(";");

  //document.write(sourceArr);//test

   //从数组中将成绩撮出来,然后求和取整,并输出。

   var score = new Array();

   var sum = 0;

   for (var i = 0; i < sourceArr.length; i ++) {

       sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(":")+1));

       //document.write("<br>" + sum);//test

   }

   document.write("--班级总分为:" + sum);

   document.write(",班级平均分为(保留整数):" + Math.round(sum/sourceArr.length))


提问者:慕粉3879583 2017-01-03 15:36

个回答

  • 那谁很靠谱3587144
    2017-01-06 20:31:22
    已采纳

    var sourceArr = sorceStr.split(";");
    //把"小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
    //分割成sourceArr =["小明:87","小花:81","小红:97"....]
      //document.write(sourceArr);//test
       //从数组中将成绩撮出来,然后求和取整,并输出。
       var score = new Array();//创建新数组
       var sum = 0;//创建变量sum赋值0;
       for (var i = 0; i < sourceArr.length; i ++)
       //创建变量i赋值0;若i<sourceArr字符串长度(长度为10,有10个人)则执行以下代码;执行之后i自增1
       {
           sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(":")+1));
           // sum+= 转换成整数(小明:87.获取(小明:87(":")加1下标处开始)到结尾的字符);
           // 第一遍:sum=0+87;第二遍sum=87+81;第三遍sum=168+97;.....
           //document.write("<br>" + sum);//test
       }
       document.write("--班级总分为:" + sum);
       document.write(",班级平均分为(保留整数):" + Math.round(sum/sourceArr.length))
       //                                          四舍五入(总分/sourceArr的长度,也就是10)
       
       //新手解释的有不对的地方,欢迎新手,大神的指点


  • 空、、
    2017-01-03 17:19:21

    不难,啊,比如这段,

    var sourceArr = sorceStr.split(";");

    通过split方法,“;”这个是分割号,就是从那里开始切割这个字符串,将所有人的成绩分开,然后存入sourceArr这的数组,

    var score = new Array();

    这个应该也不难吧,创建一个数组,对吧

    var sum = 0;

    创建一个变量。给一个初始值“0”

    for (var i = 0; i < sourceArr.length; i ++) {
           sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(":")+1));
           //document.write("<br>" + sum);//test
       }

    首先想想,怎样计算平均值了,是不是要所有成绩,然后在除以个数,就是平均值啊,但是,看看上文,就是这个数组   var sourceArr = sorceStr.split(";");我们是不是把数据都放进去了,要想获取每一个数据,这个时候我们就需要使用循环,for,首先你得知道怎么使用循环,循环for(里面有三个参数,第一个是初始值,第二循环次数,第三个增量),首先,从第一个数据开始,i=0;初始数据,第二数据,循环的次数,这个取决于成绩的数量,有多少个成绩了,sourceArr.length,这个的意思就是这个数组的长度,里面有多少个数据,i++,这个就是增量了,每次循环数据肯定都不一样,所以这个增量就起到改变数据的作用,

    sum += parseInt(sourceArr[i].substr(sourceArr[i].indexOf(":")+1));

    然后是这一段, +=这个是什么意思了,就是累加,将本身的值+其他值,重新赋值给本身,这个 可以去看看js的符号,parseInt表示转换成数字类型,sourceArr[i],这种表示方式是通过数组下标获取数组的某个值,substr是截取字段,获取某一段指定第几个到最后的数据,详细的看参考http://www.runoob.com/jsref/jsref-substr.html  。.indexOf(":")这个是获取查询元素手册出现的位置,详细的看参考 http://www.runoob.com/jsref/jsref-indexof-array.html  。indexOf(":")+1然后这里为啥要+1,这个就和substr这个方法,截取的方式有关了。