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

按照参考答案敲的代码,为什么不能输出正确的结果?谢谢街道!

按照参考答案敲的代码,为什么不能输出正确的结果?谢谢街道!

按照参考答案敲出的代码,得出下图的的结果,无法正常显示:下图是我将参考答案源代码中var arr=sorceStr.split(':');这句注释掉,自己写了一遍var arr=sorceStr.split(':')。结果仍然是图一的结果,一样的代码为什么会这种情况,谢谢。
查看完整描述

3 回答

?
陈士愚

TA贡献44条经验 获得超44个赞

var scoreStr = "xm:87;xh:81;xt:76;xz:74;xx:94;xx2:90;xw:15;"; // 7个人的成绩
var arr = scoreStr.split(";"); // 数组里实际分割出8项
var sum = 0;
var av = 0;

for(var i=0;i<arr.length;i++){
	var index = arr[i].indexOf(":");

	var one = parseInt(arr[i].substr(index+1,2));

	sum += one;
	console.log(arr[i]);

}
av = sum/arr.length;
av = Math.floor(av);
console.log(arr.length);
// console.log(sum);
// console.log(av);

测试代码如上,控制台结果如下:

xm:87
xh:81
xt:76
xz:74
xx:94
xx2:90
xw:15

8
[Finished in 0.3s]

你的scorestr格式没有写全,但是我猜测,最后仍然是有一个分号(我不知道你那个分割符是什么,我用的分好)结尾。这样调用split的时候,会造成最后一项是"",其数组长度比你预期的多了一个。这最后一项是NaN,加入到sum中,造成最后结果是NaN.

查看完整回答
1 反对 回复 2016-05-11
?
zbb_mooc

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

按你描述代码应该是没问题;因为前面一句是可以的你照着些却有问题。个人猜测是分号有问题,一个是英文的一个是中文的。你可以从上面小明:87小花:81...也就是sorceStr的值里去复制个分号放在你自己写的那句代码里看看。祝好运。

查看完整回答
反对 回复 2016-05-11
  • 3 回答
  • 0 关注
  • 1916 浏览
慕课专栏
更多

添加回答

举报

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