为什么script输出是NaN??

var date=new Date();
var week=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"];
var weekday=date.getDay();
document.write(date.getFullYear()+"年"+(date.getMonth()+1)+"月"+date.getDate()+"日"+" "+week[weekday]+"<br>");
b= "小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;
小西:90;小伍:76;小迪:64;小曼:76"
var arr=b.split(";")
for(var i=0;i<arr.length;i++)
 {
     document.write(arr[i]+"<br/>");
 }
var sum=0;
for (var i=0;i<arr.length;i++)
 {
          sum = sum + parseInt(arr[i].slice(3));
 }
 document.write("该班级的整数:"+sum+"<br/>"+"该班级的平均数:"+parseInt(sum/arr.length));


慕粉15264161994
浏览 2248回答 4
4回答

Suber丶林

在b= "小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";中,小花、小红、小天前面有个空格,所以你用slice(3)这个方法获取到的值是带着一个冒号“:”,所以parseInt()出来的值就是NaN。方法一:去掉空格。方法二:不要用slice(3),可以用正则,如下// 如果使用parseInt方法的话,则需要带上第二个参数,比如parseInt(arr[i].replace(/[^\d]+/g, ''), 10); // 因为在IE8-用的JS标准是ES3,parseInt第二个参数默认是8,而IE9默认是10 sum = sum + (+arr[i].replace(/[^\d]+/g, ''));

bingovhh

确实是有空格,用slice不如用split第16行取数的地方可以改为arr[i].split(":")[1],取得比较准确,不放心空格的话再trim一下

琢匠

输入的字符串b中间有空格
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript