JavaScript 배열
C언어나 JAVA에서도 배열이 존재했다시피 자바스크립트에도 물론 배열이 존재한다.
기존에 다뤘던 배열들과 공통점도 있지만 약간 다른점들도 있는데
자바스크립트에서 배열을 한번 알아보자.
1. 배열 생성 - 배열 리터럴로 생성
배열 리터럴로 배열을 생성할 때는 다음과 같이 쉼표로 묶은 대괄호([ ])로 묶어 표현한다.
[...]이 부분이 배열 리터럴이며 배열 값 하나하나를 배열 요소라고 부른다.
특징1) 배열 요소들에는 인덱스번호가 매겨져 있는데 인덱스번호는 C언어와 JAVA에서의 배열과 마찬가지로
0, 1, 2 ... 이렇게 0부터 시작한다.
특징2) 배열 리터럴 안에 어떠한 값도 넣지 않으면 빈 배열이 생성된다.
특징3) 배열 리터럴 요소의 값을 생략하면 그 요소는 생성되지 않는다.
특징4) 배열 요소에는 변수(var)와 마찬가지로 모든 타입의 데이터값이 들어올 수 있다.
(length 프로퍼티) 배열의 length 프로퍼티에는 배열 요소의 최대 인덱스 값 + 1 이 담겨있다.
※ C나 JAVA에서의 배열 길이는 배열 요소의 개수를 뜻하지만 자바스크립트에서는 배열 요소의 개수를 뜻하지 않는다!
length 프로퍼티에 현재의 배열 요소 개수보다 작고 0보다 큰 정수값을 대입하면 배열 길이가 줄어든다.
2. Array 생성자로 배열 생성하기
다음과 같이 Array 생성자로도 배열을 생성할 수 있다.
그런데 만약 Array 생성자의 인수가 한 개고 그 값이 양의 정수이면
그 때 인수는 배열 길이를 뜻하게 된다.
(인수가 한 개고 음의 정수이면 에러 발생)
C나 JAVA에서의 배열은 배열 요소가 메모리의 연속적인 공간에 차례대로 배치되어 있다.
그래서 인덱스를 지정하면 인덱스가 가리키는 요소를 찾아 읽거나 쓴다.
그러나 자바스크립트에서의 배열은 Array 객체이다.
Array 객체는 인덱스를 문자열로 변환해서 그것을 프로퍼티로 이용하는 것이다.
따라서 배열의 요소 번호로 숫자 값 대신 문자열을 사용할 수도 있다.
3. 배열 요소의 추가와 삭제
없는 배열 요소에 값을 대입하면 새로운 요소를 추가할 수 있다.
또한 push 메소드를 이용하면 요소를 배열 끝에다 추가할 수도 있다.
delete 연산자를 이용하면 특정 요소를 삭제할 수 있다.
※ delete 연산자를 사용해 배열 요소를 삭제해도 그 배열의 length 값은 바뀌지 않는다.
삭제한 요소만 사라지는 것!
처음 설명한 없는 배열 요소에 값을 대입하여 새로운 요소를 추가하는 방법이나
배열 요소를 제거하면 중간에 빈 요소가 생길 수 있는데, 이러한 배열을 희소 배열이라고 한다.
위 코드에서 인덱스:3번 요소가 'empty'로 표시되지만 실제로는 값이 없다.
저 배열을 보기 쉽게 객체 리터럴로 바꿔본다면 다음과 같다.
{ "0":"A", "1":"B", "2":"C", "4": "E" }
이때 희소 배열의 길이는 배열 요소의 개수보다 큽니다. length값이 배열 요소의 최대 인덱스값 + 1이기 때문이다.
따라서 위 희소 배열의 길이는 '5'가 된다.
4. 배열 요소가 있는지 확인
hasOwnProperty 메소드를 사용하여 해당 배열의 인덱스에 배열 요소가 있는지 확인할 수 있다.
위 예제를 보면, 인덱스 1번에는 '2'라는 요소가 있어 true가 출력되었지만
인덱스 2번은 비어있기 때문에 false가 출력된 것을 볼 수 있다.
< 본 포스팅에서 설명한 코드의 출처는 '길벗출판사 - 모던 자바스크립트 입문' 도서입니다. />
'JavaScript' 카테고리의 다른 글
#8 자바스크립트 - 숫자를 문자열로, 문자열을 숫자로 (feat.Number 객체 메소드) (0) | 2019.03.10 |
---|---|
#7 자바스크립트 - 문자열 제어 (0) | 2019.03.09 |
#5 자바스크립트 - 내장 생성자 (0) | 2019.03.08 |
#4 자바스크립트 - 생성자 (0) | 2019.03.08 |
#3 자바스크립트 - 함수의 기초 (0) | 2019.03.08 |