Javascript 从多个项目中获取平均值

Javascript 从多个项目中获取平均值,javascript,Javascript,让我们假设我有一个这样的列表 [name1, number1], [name2, number2], [name3, number 3] 比如说 [John, 86], [Joe, 94], [bob, 45], [andy, 34] 我试着把80以上的人都打印出来,得到平均数。所以在这种情况下,我想输出 John Joe 90 我可以用什么最简单的结构来实现这一点?如果你有一个数组,每个数组有两个元素,第一个是名称,第二个是年龄,你可以这样表示它: var people = [["Joh

让我们假设我有一个这样的列表

[name1, number1], [name2, number2], [name3, number 3]
比如说

[John, 86], [Joe, 94], [bob, 45], [andy, 34]
我试着把80以上的人都打印出来,得到平均数。所以在这种情况下,我想输出

John Joe 90

我可以用什么最简单的结构来实现这一点?

如果你有一个数组,每个数组有两个元素,第一个是名称,第二个是年龄,你可以这样表示它:

var people = [["John", 86], ["Joe", 90], ["Bob", 45], ["Andy", 34]];
var sum = 0;
var length = 0;
var names = [];
for(var i = 0; i < people.length; i++) {
  var person = people[i];
  if(person[1] >= 80) {
    sum += person[1];
    length++;
    names.push(person[0]);
  }
}
alert(names.join(" "));  //alerts "John Joe"
alert(sum / length);     //alerts 88
var data = [[john, 86], [joe, 94], [bob, 45], [andy, 34]];
你可以把80岁以上的人列出来,列出他们的名字,然后平均年龄如下:

var people = [["John", 86], ["Joe", 90], ["Bob", 45], ["Andy", 34]];
var sum = 0;
var length = 0;
var names = [];
for(var i = 0; i < people.length; i++) {
  var person = people[i];
  if(person[1] >= 80) {
    sum += person[1];
    length++;
    names.push(person[0]);
  }
}
alert(names.join(" "));  //alerts "John Joe"
alert(sum / length);     //alerts 88
var data = [[john, 86], [joe, 94], [bob, 45], [andy, 34]];
var总和=0;
变量长度=0;
变量名称=[];
for(var i=0;i=80){
总和+=人[1];
长度++;
name.push(person[0]);
}
}
警报(name.join(“”)//警报“约翰·乔”
警报(总和/长度)//警报88

您可以在操作中看到它。

这看起来像一个数组数组。您可以做的是迭代父数组,然后检查每个嵌套数组。如果嵌套数组在第二个点(
[1]
)包含大于80的分数,则可以将该分数添加到总数中,并将第一个点(
[0]
)中的名称添加到字符串中。添加完所有内容后,将总数除以添加的内容,并将其与名称一起放在字符串的末尾

function GetNameAverageString(numberOfUsers,arrayOfData){
 var runningCount = 0;//number of users added to return string
 var total = 0;//total of scores from added users
 var names = "";//return string which will contain names and average
 for( var nestedArray in arrayOfData ){
  if( parseInt(arrayOfData[nestedArray][1]) < 81 ) continue;//only scores over 80
  names += arrayOfData[nestedArray][0] + " ";//append the name to the return string
  runningCount++;//add to the count of users recorded
  total += parseInt(arrayOfData[nestedArray][1]);//add to the score total
 }
 var average = total / runningCount;//calculate average score based on users added
 names += average.toString();//append the score to the end of the names
 return names;
}
函数GetNameAverageString(numberOfUsers,arrayOfData){
var runningCount=0;//添加到返回字符串的用户数
var total=0;//添加用户的总分
var names=”“;//返回字符串,其中将包含名称和平均值
for(arrayOfData中的var nestedArray){
如果(parseInt(arrayOfData[nestedArray][1])<81继续;//仅得分超过80分
names+=arrayOfData[nestedArray][0]+“”;//将名称附加到返回字符串中
runningCount++;//添加到记录的用户数
total+=parseInt(arrayOfData[nestedArray][1]);//添加到总分中
}
var average=total/runningCount;//根据添加的用户计算平均分数
names+=average.toString();//将分数附加到名称的末尾
返回姓名;
}
var-dataArray=[[“约翰”,86],“乔”,94],“鲍勃”,45],“安迪”,34];
var计数=0;
var合计=0;
var peopleOverlighty=“”;
对于(var i=0;i80){
计数++;
总数+=数据数组[i][1];
PeopleOverlighty+=dataArray[i][0]+“”;
}
}
警报(PeopleOverlighty++(总数/计数));

您似乎拥有如下数据结构:

var people = [["John", 86], ["Joe", 90], ["Bob", 45], ["Andy", 34]];
var sum = 0;
var length = 0;
var names = [];
for(var i = 0; i < people.length; i++) {
  var person = people[i];
  if(person[1] >= 80) {
    sum += person[1];
    length++;
    names.push(person[0]);
  }
}
alert(names.join(" "));  //alerts "John Joe"
alert(sum / length);     //alerts 88
var data = [[john, 86], [joe, 94], [bob, 45], [andy, 34]];
你想过滤掉80岁以下的所有人:

data = data.filter(function(value,index,array){return (value[1]<80);});
data=data.filter(函数(值、索引、数组){return(值[1]
“我能用什么最简单的结构来完成这项工作?”

Array.prototype.reduce
用于此:

var arr = [["John", 86], ["Joe", 94], ["bob", 45], ["andy", 34]],
    result;
(result = arr.reduce(function(ret, arr) {
    if (arr[1] >= 80) {
        ret[0].push(arr[0]);
        ret[1] += arr[1];
    }
    return ret;
}, [[], 0]))[1] /= result[0].length;

您可以从MDN获得一个
.reduce()
垫片。

我不确定您在问什么。试着站在我们的立场上,阅读您的问题,看看它是否有意义。请注意,这仅适用于兼容ECMAScript-5的浏览器。对于iRight,提供了垫片。