본문 바로가기

Javascript

JavaScript(3) - 내장 객체(Array)

Array객체는 여러가지 자료를 쉽게 관리하게 해주는 객체이다. Array객체 생성방법은 4가지가 있다.

1
2
3
4
5
6
<script>
    var array1 = {12345};
    var array2 = new Array(5);
    var array3 = new Array();
    var array4 = new Array(12345);
</script>
cs

Array객체는 몇개의 자료를가지고있는지 나타내는 length속성을 가지고 있으며 여러개의 중요 메서드를 가진다.

  • join() - 배열안의 모든요소를 문자열로 바꿔서 리턴한다.
  • pop() - 배열의 마지막요소를 제거후 리턴한다.
  • push() - 배열의 마지막에 요소를 추가하고 리턴한다.
  • reverse() - 배열의 요소 순서를 뒤집는다.
  • slice() - 지정한 부분을 리턴한다.
  • sort() - 배열의 요소를 정렬 후 리턴한다.
  • splice() - 지정한 부분의 요소를 삭제 후 삭제한 요소를 리턴한다.

sort()메서드를 사용할 때 정렬에 변화를 주고 싶으면 메서드의 매개변수로 함수를 사용한다.

1
2
3
4
5
6
7
8
<script>
    var array1 = [5227310332];
    array1.sort(function(left, right){
        return right-left;
    });
    alert(array1);
    
</script>
cs

right-left는 내림차순 정렬이고, left-right로 바꾸면 오름차순 정렬이된다.
Array객체 메서드를 활용해서 학생 4명의 정보를 입력하고 총점순으로 2등까지만 출력하게 해봤다.

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
<script>
    function Student(name, korean, math, english){
        this.이름 = name;
        this.국어 = korean;
        this.수학 = math;
        this.영어 = english;
        
        this.getSum = function(){
            return this.국어 + this.수학 + this.영어;
        };
        this.getAverage = function(){
            return this.getSum / 3;
        };
        this.toString = function(){
            return this.이름 + "\t" + this.getSum() + "\t" + this.getAverage();
        };
    }
    
    var students = [];
    students.push(new Student('윤하린'909090));
    students.push(new Student('하뤼이'808080));
    students.push(new Student('내가아'10010097));
    students.push(new Student('아녕아'402999));
    
    students.sort(function(left, right){
        return right.getSum() - left.getSum();
    });
    
    students = students.slice(0,2);
    
    var output = '이름 \t총점\t평균\n';
    for(var i in students){
        output += students[i].toString() + '\n';
    }
    alert(output);
    
</script>
cs

총점이 제일높은 내가아, 윤하린 2명의 정보가 출력된다.

Array객체에는 요소를 제거하는 메서드가 없는데 prototype과 splice()를 통해 remove메서드를 만들 수 있다.

1
2
3
4
5
6
7
8
<script>
    Array.prototype.remove = function(index){
        this.splice(index, 1);
    }
    var array1 = new Array(1,2,3,4,5);
    array1.remove(2);
    alert(array1);
</script>
cs

이렇게하면 2번째 위치에있는 3이제거가되고 1,2,4,5가 출력된다. 배열에서 조건값보다 큰 숫자를 삭제하기 위한 for문을 사용하려면 역 for문을 사용해야한다. 왜냐하면 배열에서는 인덱스값이 삭제가되면 그 공간이 사라지고 뒤에있던 인덱스값이 그 자리를 채우기 때문이다.

'Javascript' 카테고리의 다른 글

JavaScript(2) - 내장 객체(Object, String)  (0) 2019.04.17
JavaScript(1) - 캡슐화와 상속  (0) 2019.04.15