본문 바로가기

프로그래밍 공부/JavaScript

JavaScript - 객체와 배열을 사용한 데이터 관리

현실에 있는 객체를 모두 모방하는 것이 아니라 프로그램에 필요한 속성만을 가져와서 객체화 하는 것을 추상화 라고 한다. 학생들의 성적 총점과 평균을 계산하는 경우를 예로 들수 있다.

// 데이터를 통합할 배열을 생성
let students = [];

// push() 메서드를 이용해서 각각의 학생 객체 데이터들을 배열에 추가
students.push({ 이름: '최ㅇㅇ'국어: 99수학: 92영어: 99과학: 91 });
students.push({ 이름: '김ㅇㅇ'국어: 88수학: 88영어: 95과학: 88 });
students.push({ 이름: '국ㅇㅇ'국어: 98수학: 78영어: 99과학: 78 });
students.push({ 이름: '이ㅇㅇ'국어: 79수학: 95영어: 96과학: 68 });
students.push({ 이름: '문ㅇㅇ'국어: 80수학: 96영어: 86과학: 84 });
students.push({ 이름: '여ㅇㅇ'국어: 75수학: 79영어: 97과학: 86 });
students.push({ 이름: '박ㅇㅇ'국어: 92수학: 94영어: 89과학: 93 });
students.push({ 이름: '길ㅇㅇ'국어: 96수학: 88영어: 62과학: 96 });
students.push({ 이름: '홍ㅇㅇ'국어: 95수학: 87영어: 99과학: 85 });
students.push({ 이름: '연ㅇㅇ'국어: 95수학: 84영어: 91과학: 77 });

객체가 흩어져 있다면 정리하기 힘들기 때문에 앞서 배웠던 배열안에 객체도 자료형으로 넣을 수 있다는 특성을 활용해 배열안에 객체를 삽입하는 방법을 사용한다.

// 일반적인 방법
let result'이름 \t 총합 \t 평균\n';
for(let i = 0i < students.lengthi++){
     with(students[i]){
          let sumAll = 국어 + 수학 + 영어 + 과학;
          let average = sumAll / 4;
          result += 이름 + \t ' + sumAll + \t ' + average + '\n';
     }
}
console.log(result);
alert(result);

일반적인 방법으로 배열에 for 반복문을 이용해서 내부에 있는 각각의 객체를 불러와서 내부 속성에 접근을 해서 총합과 평균을 얻어 결과값으로 출력하는 방법이 있다.

// 반복문을 이용해 students 배열안에 있는 객체에 메서드를 추가for(let i in students) {

// getSum 라는 이름의 총점을 구하는 메서드를 추가
     students[i].getSum = function () {
          return this.국어 + this.수학 + this.영어 + this.과학;
     };

// getAverage 이라는 이름의 평균을 구하는 메서드를 추가
     students[i].getAverage = function () {
          return this.getSum() / 4;
     };
}

// 출력
let result'이름 \t 총점 \t 평균\n';
for(let i in students) {
     with (students[i]) {
          result += 이름 + \t ' + getSum() + \t ' + getAverage() + '\n';
     };
}
console.log(result);
alert(result);

위의 코드는 '데이터를 처리 부분'과 '메인 프로세스 부분'을 분리해서 코드를 좀더 부분적으로 볼 수 있게 나눈 것 이다.  가독성이 좋아지고 여러 사람들과 협업을 할 때 서로 알아보기가 편한 방법이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 객체를 만드는 함수
function creatStudent(이름, 국어, 수학, 영어, 과학){
    let object = {
// '키'로 선언되는 값: '매개변수'의 값
        이름: 이름,
        국어: 국어,
        수학: 수학,
        영어: 영어,
        과학: 과학
    };
// getSum 이라는 이름의 총점을 구하는 메서드를 추가
    object.getSum = function () {
        return this.국어 + this.수학 + this.영어 + this.과학;
    };
// getAverage 라는 이름의 평균을 구하는 메서드를 추가
    object.getAverage = function () {
        return this.getSum() / 4;
    };
// toString 이라는 결과를 정리하는 메서드를 추가
    object.toString = function () {
        return this.이름 + ' \t ' + this.getSum() + ' \t ' + this.getAverage() + '\n';
    }
    return object;
};
     
// 데이터를 통합할 배열을 생성
let students = [];
// push() 메서드를 이용해서 각각의 학생 객체 데이터들을 배열에 추가
students.push(creatStudent( '최ㅇㅇ'99929991 ));
students.push(creatStudent( '김ㅇㅇ'88889588 ));
students.push(creatStudent( '국ㅇㅇ'98789978 ));
students.push(creatStudent( '이ㅇㅇ'79959668 ));
students.push(creatStudent( '문ㅇㅇ'80968684 ));
students.push(creatStudent( '여ㅇㅇ'75799786 ));
students.push(creatStudent( '박ㅇㅇ'92948993 ));
students.push(creatStudent( '길ㅇㅇ'96886296 ));
students.push(creatStudent( '홍ㅇㅇ'95879985 ));
students.push(creatStudent( '연ㅇㅇ'95849177 ));
 
// 출력
let result= '이름 \t 총점 \t 평균\n';
for(let i in students) {
    result += students[i].toString();
}
console.log(result);
alert(result);
cs

위의 코드는 이전보다 더 세분화를 해서 '객체를 구현하는 구역'과 '데이터를 생성하는 부분' 그리고 '메인 프로세스 부분'으로 분리를 한 형태이다.

객체와 배열을 사용한 데이터 관리.html
0.01MB