본문 바로가기
프로그래밍 개발/JS 기본 언어

Javascript 배열(array)

by Jinseok Kim 2020. 11. 6.
반응형

배열이란?

 

배열이란 연관된 데이터를 모아서 통으로 관리하기 위해서 사용하는 데이터 타입이다. 변수가 하나의 데이터를 저장하기 위한 것이라면 배열은 여러 개의 데이터를 하나의 변수에 저장하기 위한 것이라고 할 수 있다. 

 

 

 

 

 

 

배열의 생성

 

 

여러 개의 데이터를 하나의 변수에 담아서 관리할 수 있는 방법으로 배열을 쓰면 된다.

var member = ['kim', 'jin', 'soek']

 

변수 member에 담아보고자하는 정보를 대괄호([])는 배열을 만드는 기호다. 대괄호 안에 데이터를 콤마(,)로 구분해서 나열하면 배열이 된다.

 

 

 

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
    <script>
    var member = ['kim', 'jin', 'seok']
alert(member[0]);
alert(member[1]);
alert(member[2]);
    </script>
</body>
</html>

 

  • 배열에 담겨있는 값을 가져올 때는 대괄호 안에 숫자를 넣는다. 이 숫자를 색인(index)라고 부르고 0부터 시작한다. 즉 첫번째 원소(egoing)를 가져오려면 대괄호 안에 0을 넣어주어야 한다는 것이다.
  • 두번째는 1, 세번째는 2를 입력한다. 이 값을 이용해서 배열에 저정된 값을 가져올 수 있다.

 

 

 

 

 

 

배열의 사용

 

 

 

배열의 진가는 반복문과 결합했을 때 나타난다. 반복문으로 리스트에 담긴 정보를 하나씩 꺼내서 처리 할 수 있기 때문이다. 

 

아래 코드처럼 결합했을때 매우 간결하면서도 효율적으로 코드를 짤 수 있다.

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8"/>
</head>
<body>
    <script>
   function get_members(){
    return ['kim', 'jin', 'soek'];
}
members = get_members();

for(i = 0; i < members.length; i++){
   
    document.write(members[i].toUpperCase());   
    document.write('<br />');
}
    </script>
</body>
</html>

 

  • 위의 코드에서 .length는 배열에 담긴 값의 개수를 숫자로 알려준다.
  • .toUpperCase()는 members[i]에 담긴 문자를 대문자로 변환해준다.
  • 반복문을 이용해서 배열 members의 내용을 하나씩 꺼낸 후에 이름의 첫글자를 .toUpperCase()을 이용하여 대문자로 변경한 후에 출력하고 있다.
  • 정리하면, 배열이란 연관된 정보를 하나의 그룹으로 관리하기 위해서 사용한다. 그리고 그 정보를 처리 할 때는 반복문을 이용한다.

 

 

 

 

 

 

 

배열의 제어

 

 

 

배열은 복수의 데이터를 효율적으로 관리, 전달하기 위한 목적으로 고안된 데이터 타입이다. 따라서 데이터의 추가/수정/삭제와 같은 일을 편리하게 할 수 있도록 돕는 다양한 기능을 가지고 있다.

 

 

 

 

 

 

추가

 

 

Push

 

  • push는 인자로 전달된 값을 배열(li)에 추가하는 명령이다. 배열 li의 값은 a, b, c, d, e, f가 됐다.

 

 

 

 

Concat

 

  • Concat은 복수의 원소를 배열에 추가하는 방법으로 인자로 전달된 값을 추가하는 명령이다.

 

 

 

 

Unshift

 

  • Unshift는 배열의 시작점에 원소를 추가하는 방법이다. 인자로 전달한 값을 배열의 첫번째 원소로 추가하고 배열의 기존 값들의 색인을 1씩 증가시킨다.

 

 

 

 

Splice

 

  • Splice는 첫번째 인자에 해당하는 원소부터 두번째 인자에 해당하는 원소의 숫자만큼의 값을 배열로부터 제거한 후에 리턴한다. 그리고 세번째 인자부터 전달된 인자들을 첫번째 인자의 원소 뒤에 추가한다.
  • 두번째 인덱스 뒤에 대문자 B를 넣게 되었다. 
  • array.splice(index, howmany, element1, ...., elementN); 첫번째 인자배열에 추가할 특정 배열의 위치를 가르키며 두번째 인자는 index에서부터 제거될 원소들의 수. index부터 index+howmany에 해당하는 원소들은 삭제되게 한다. 이 값이 0이면 어떠한 원소도 삭제되지 않는다. 세번째 인자는 index와 index+howmany 사이에 추가될 값이다.

 

 

 

 

 

 

제거

 

 

Shift

 

  • Shift을 사용하면 배열의 첫번째 원소를 제거할 수있다. 

 

 

 

 

 

Pop

 

  • Pop은 배열 끝점의 원소를 배열 li에서 제거한다.

 

 

 

 

 

 

 

정렬

 

 

Sort

 

  • 알파벳 순서를 차례대로 정렬하도록 하였다.

 

 

 

 

  • 숫자 또한 순서대로 정렬할 수 있다. 하지만 숫자의 경우 암시적으로 문자열로 형변환 하기 때문에 숫자1이 숫자 10보다 먼저 나온다.

 

 

 

 

 

  • array.sort(sortfunc) 
  • sortfunc 로 비교 대상인 두개의 인자를 전달하는데, 리턴 값에 따라서 선후를 판단한다.
  • 여기서 return은 array, 정렬된 배열, 자기 자신에 대한 레퍼런스 값이라도 할 수 있다. 이때 sort함수는 콜백함수이고 콜백함수의 파라미터는 a와b 즉 두 값을 순차적으로 비교하기 위한 문법이다. 즉 콜백함수는 return이 당연이 있어야 한다고 볼 수 있다.
  • 수행 과정을 분석해보면 return a-b인 경우 비교 대상인 a와 b가 인자로 전달된다. alert('a :'+a+', b:'+b);a에서 b를 뺀 결과가 음수면 a가 b보다 작고, 0이면 같다. sort메소드는 return 값이 음수,양수,0인지에 따라서 순서를 정한다.
  • return b-a는 그 반대인 경우이다.

 

 

 

 

 

Reverse

 

  • Reverse는 역순으로 정렬하고 싶을 때는 사용한다.

 

 

 

 

 

 

 

반응형

댓글