我正在努力获得新生和大二学生的平均“水平”。此时我已将答案添加到一起,但我不确定如何仅为匹配“新生”或“二年级”的项目获得答案总数。我使用len = gdata.length来计算数组中的项目总数,但我只需要重新计算匹配的答案。
var len = gdata.length;
var sum = 0;
var sumF = 0;
var sumSo = 0;
var average = 0;
var avgF = 0;
var avgSo = 0;
$.each(gdata, function (i, gdata){
var date = gdata.Timestamp;
var level = gdata.level;
var year = gdata.year;
sum+=parseInt(level) || 0;
average = sum/len;
switch(year) {
case 'Freshman':
sumF+=parseInt(level) || 0;
console.log(sumF);
avgF = sumF/len;
break;
case 'Sophomore':
sumSo+=parseInt(level) || 0;
console.log(sumSo);
avgSo = sumSo/len;
break;
default:
console.log("");
}
});
console.log(sum);
console.log(average);
};
答案 0 :(得分:2)
您可以先使用jQuery.grep过滤数组。 enter link description here
var fsData = $.grep(gdata, function (n, i) {
return n.year == "Freshman" || n.year == "Sophomore";
});
然后fsData.length将是新生和大二学生的总数。然后你的每个陈述都可以调整为:
$.each(fsData, function (i, data) {
// blah blah
});
编辑:
如果你想把大一和二年级学生分开,你可以这样做:
var freshman = [];
var sophomores = [];
var freshman_and_sophomores = [];
$.each(gdata, function (i, v) {
if (v.year == "Freshman" || v.year == "Sophomore") {
freshman_and_sophomores.push(v);
if (v.year == "Freshman") freshman.push(v);
if (v.year == "Sophomore") sophomores.push(v);
}
});
现在你可以抓住freshman.length和sophomores.length。然后在下一个$ .each中使用freshman_and_sophomores。