연습문제

  • 객체에 학생들의 점수 집합을 저장하는 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);

results matching ""

    No results matching ""