猿问
下载APP

如何对求出给定数组中的平均成绩,并打印出最高成绩的人和成绩

var scoreStr = "小2明:87;小花:81;小红:97;小1:76;小99:74;小2:94;小西:90;小伍:76;小迪:64;小曼:76";

var score=eval(("[{"+scoreStr+"}]").replace(/;/g,"},{"));

//希望寻着这个思路往下,希望不要用到显示循环

慕标6419154
浏览 4709回答 3
3回答

李晓健

var scoreStr = "小2明:87;小花:81;小红:97;小1:76;小99:74;小2:94;小西:90;小伍:76;小迪:64;小曼:76"; //将字符串组装成数组 var scoreArr = scoreStr.split(';'); //对数组进行排序  将最高分排到最前面 scoreArr.sort(function (user,user2) {     var score = parseInt(user.split(':')[1]);     var score2 = parseInt(user2.split(':')[1]);     return score2 - score; }); //对分数求和 var totalScore = scoreArr.reduce(function (total,user) {     var score  = parseInt(user.split(':')[1]);     return total+score; },0) //取出分数最高的人的信息 var maxUserArr  = scoreArr[0].split(':'); alert('平均成绩是:'+totalScore/scoreArr.length+' ;最高分数的人是'+maxUserArr[0]+',他的分数是:'+maxUserArr[1]);你这个不让用循环的要求有点过了,希望这样你能看懂如果解决了你的问题,请记得采纳

maoruibin

var scoreStr = "小2明:87;小花:81;小红:97;小1:76;小99:74;小2:94;小西:90;小伍:76;小迪:64;小曼:76";var tostring = Object.prototype.toString;Object.prototype.toString = function() {    return Number(this.value);};scoreStr = scoreStr.replace(/:/g,'",value:').replace(/;/g,'},{name:"');var score=eval(("[{name:\""+scoreStr+"}]"));score.sort(function(v1, v2) {    return (v1 - v2);});var max = score[score.length - 1];var reducer = function add(sumSoFar, item) { return sumSoFar + item; };// do the jobvar total = score.reduce(reducer, 0);var avg = total / score.length;console.log(total);Object.prototype.toString = tostring;console.log(max.name);//最高成绩console.log(avg);//平均分建议你可以去看下我geithub上的项目:https://github.com/maoruibin001/Black-Technology 里面有详细的单元测试。

落叶1111

你的eval写法是错的,还有不用到循环只有一种解决方法了,那就是js自带的和循环有关的东西,比如sort排序之类呢,建议自己研究,
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答