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

为什么script输出是NaN??

为什么script输出是NaN??

慕粉15264161994 2016-06-06 18:23:37
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));
查看完整描述

4 回答

?
Suber丶林

TA贡献75条经验 获得超180个赞

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, ''));


查看完整回答
5 反对 回复 2016-06-06
?
bingovhh

TA贡献1条经验 获得超0个赞

确实是有空格,用slice不如用split

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

查看完整回答
反对 回复 2016-06-15
?
琢匠

TA贡献3条经验 获得超2个赞

输入的字符串b中间有空格

查看完整回答
反对 回复 2016-06-06
  • 4 回答
  • 0 关注
  • 2247 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信