연습문제
- 객체에 학생들의 점수 집합을 저장하는 grades 객체를 만드시오. 점수를 추가하는 함수, 학생의 평균점수를 출력하는 기능을 객체에 추가하시오.
function Grades(){
this.store = [];
}
Grades.prototype.add = function(grade){
this.store.push(grade);
console.log("Add " + grade + " to store.");
}
Grades.prototype.average = function(){
var sum, result;
sum = this.store.reduce(function(a,b){
return a+b;
});
result = sum/this.store.length;
console.log("Average is " + result);
}
var grades = new Grades();
grades.add(90);
grades.add(80);
grades.add(70);
grades.average();
- 배열에 단어 집합을 저장한 다음 배열의 내용을 정방향 또는 역방향으로 출력하는 기능을 구현하시오.
(function(window){
var mySorter = {
sortText: function(arr){
var result = arr.sort();
return result;
},
sortNumber: function(arr){
var result = arr.sort(function(a,b){
return a - b;
});
return result;
},
reverse: function(arr){
var result = arr.reverse();
return result;
}
};
window.mySorter = mySorter;
}(window));
var wordSet = ["apple ", "tomato", "coconut"];
console.log(mySorter.sortText(wordSet));
console.log(mySorter.reverse(wordSet));
- 이차원 배열을 이용해 월간 온도 자료를 저장하도록 weeklyTemps 객체를 고치시오. 월간 평균, 지정한 주의 평균, 모든 주의 평균을 출력하는 함수를 만드시오.
function WeekTemps(){
this.dataStore = [];
}
WeekTemps.prototype.add = function(temp){
var len = this.dataStore.length;
if(len == 0){
this.dataStore.push([]);
this.dataStore[0].push(temp);
}else if(this.dataStore[len-1].length < 7 ){
this.dataStore[len-1].push(temp);
}else{
this.dataStore.push([]);
this.dataStore[len].push(temp);
}
}
WeekTemps.prototype.weekAverage = function(weekNum){
var sum, result;
if (weekNum <= this.dataStore.length) {
sum = this.dataStore[weekNum-1].reduce(function(a,b){
return a+b;
});
result = sum/this.dataStore[weekNum-1].length;
console.log("week"+weekNum + "'s average is " + result);
} else {
console.log("No result.")
}
}
WeekTemps.prototype.allAverage = function(){
var sum = 0,
count = 0,
dataStore = this.dataStore;
for (var i = dataStore.length - 1; i >= 0; i--) {
sum += dataStore[i].reduce(function(a,b){
return a+b;
});
count += dataStore[i].length;
}
return sum/count;
}
var thisWeek = new WeekTemps();
thisWeek.add(90);
thisWeek.add(80);
thisWeek.add(70);
thisWeek.add(90);
thisWeek.add(80);
thisWeek.add(70);
thisWeek.add(80);
thisWeek.weekAverage(1);