为了账号安全,请及时绑定邮箱和手机立即绑定

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

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))


正在回答

2 回答

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)
   
   //新手解释的有不对的地方,欢迎新手,大神的指点


0 回复 有任何疑惑可以回复我~
#1

慕粉3879583 提问者

非常感谢!
2017-01-07 回复 有任何疑惑可以回复我~
#2

那谁很靠谱3587144

莫客气,还有不懂的继续问,回答别人的问题,也是对自己知识的一个检验方式
2017-01-07 回复 有任何疑惑可以回复我~

不难,啊,比如这段,

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这个方法,截取的方式有关了。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信