我一直在寻找一种处理数据的方法。我尝试过数组、对象和JSON.stringify(),但是我似乎无法成功地使用thoose。
我需要一个代码来处理这类数据。
first object:
first data {lesson: "MATH", count: 6}
second data {lesson: "BIOLOGY", count: 4}
second object:
first data {lesson: "MATH", average: 85, period: 1}
second data {lesson: "BIOLOGY", average: 40, period: 1}
third object
first data {lesson: "MATH", average: 95, period: 2}
second data {lesson: "BIOLOGY", average: 45, period: 2}我需要两个函数来用给定的数据填充对象,并在需要时调用它们,如
function reqDataAverage(lesson, period) {
//some stuff todo
return average;
}
function reqDataCount(lesson) {
//some stuff todo
return count;
}我用这段代码创建数据(注意:元素是“第一个数据”)。
var element = new Object();
var x;
console.log("Start of data");
for (x in TArrayI) {
var first = TArrayI[x][0];
var second = TArrayI[x][averageRow];
if (first == "") {
break;
} else {
element.lesson = first;
element.average = second;
element.period = 1;
console.log("Lesson is " + element.lesson + "and average is " + element.average + "/" + element.period);
}
}在完成之后,我必须要做这样的事情:
var lessons = [...]
var result = 0;
var sum;
function math() {
var x;
for (x in lessons) {
var lesson = lessons[x];
var averageOfThis = reqDataAverage(lesson, 1);
var multiplierCount = reqDataCount(lesson);
var result = result + (averageOfThis x multiplierCount);
}
var sum = result / 40;
}诚挚的问候
发布于 2015-06-09 21:26:29
我想我明白你要什么了。您需要循环使用findAndAdd()函数来填充平均值数组。
var lessons = [];
function findAndAdd(subject, period, average){
lessons.forEach(function(lesson){
if(lesson.subject === subject && lesson.period === period){
lesson.averages.push(average);
}
});
return -1;
}
function Lesson(subject, period){
this.subject = subject;
this.period = period;
this.averages = [];
}
function count(subject, period){
var cnt = -1;
lessons.forEach(function(lesson){
if(lesson.subject === subject && lesson.period === period){
cnt = lesson.averages.length;
}
});
return cnt;
}
function average(subject, period){
var sum, lesson;
lessons.forEach(function(lsn){
if(lsn.subject === subject && lsn.period === period){
lesson = lsn;
}
});
if(lesson.averages.length > 0){
sum = lesson.averages.reduce(function(prev, curr){
return prev + curr;
});
return sum / lesson.averages.length;
}
return -1;
}
// sample data for testing purposes
var newObj = new Lesson('MATH', 1);
lessons.push(newObj);
newObj = new Lesson('MATH', 2);
lessons.push(newObj);
newObj = new Lesson('BIOLOGY', 1);
lessons.push(newObj);
newObj = new Lesson('BIOLOGY', 2);
lessons.push(newObj);
findAndAdd('MATH', 1, 65);
findAndAdd('MATH', 1, 75);
console.log(count('MATH', 1));
console.log(average('MATH', 2));https://stackoverflow.com/questions/30738573
复制相似问题