题目:
var sorceStr = "小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
求班级的平均分数。
在浏览器中显示平均值为NaN,请教问题出在哪里?
var newarr=sorceStr.split(";");
var zf=0;
var pj=0;
for(var i=0;i<newarr.length;i++){
var index=newarr.indexOf(":");
zf += parseInt(newarr[i].substr(index+1,2));
}
pj=zf/newarr.length;
pj=Math.floor(pj);
document.write(" "+"班级的平均分数是:"+pj);
二楼正解,缺少索引[i]
var index=newarr.indexOf(":");
这句有错误
==>var index=newarr[i].indexOf(":");
var sorceStr = "小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var newarr=sorceStr.split(";");
var zf=0;
var pj=0;
for(var i=0;i<newarr.length;i++) {
var index = newarr[i].indexOf(":");
zf += parseInt(newarr[i].substr(index + 1, 2));
}
pj=zf/newarr.length;
pj=Math.floor(pj);
console.log(" "+"班级的平均分数是:"+pj);
或
var sorceStr = "小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var newarr=sorceStr.split(";");
var zf=0;
var pj=0;
for(var i=0;i<newarr.length;i++){
zf += parseInt(newarr[i].split(':')[1],10);
}
pj=zf/newarr.length;
pj=Math.floor(pj);
console.log(" "+"班级的平均分数是:"+pj);
var list = sorceStr.match(/\d+/g);
var average = list.reduce(function(l,r){
return ~~r + ~~l;
})/list.length;
console.log('平均分数为:',average);
楼主神代码,循环里面,index of前面少了索引号啦
var sourceStr = "小明:87;小花:81;小红:97;小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
var array = sourceStr.split(';').map(u => u.split(':')[1]);
var average = array.reduce((r, u) => +u + +r) / array.length;
console.log(average);
function ava(str){
var newstr=str.split(";");
var average = 0;
for(var i in newstr){
average += newstr[i].split(':')[1]*1;
}
return average/newstr.length;
}
var sorceStr = "小明:87; 小花:81; 小红:97; 小天:76;小张:74;小小:94;小西:90;小伍:76;小迪:64;小曼:76";
ava(str);