IT_Programming/JavaScript

자바스크립트 완벽가이드 - 3.6 배열

JJun ™ 2010. 7. 4. 17:56


배열(array)은 객체처럼 데이터 값들의 모음이다. 객체 내에 포함되는 각 데이터 값에는 이름이 있는 반면,

배열의 각 데이터 값에는 번호, 즉 인덱스(index)가 있다. 배열 이름 다음에 대괄호로 둘러싸인 인덱스를

써주어서 배열로부터 값을 가져올 수 있다. 예를 들어, 배열 이름이 a이고 i가 음수가 아닌 정수라면 a[i]는

배열의 한 원소를 가리킨다. 배열 인덱스는 0부터 시작한다. 그러므로 a[2]는 배열 a의 세 번째 원소를

가리킨다.


배열은 다른 배열이나 객체, 혹은 함수를 포함한, 어떠한 자바스크립트 데이터 타입의 데이터라도

담을 수 있다. 예를 들어,

 

document.images[1].width


이 코드는 document객체의 images 배열에 두 번째 원소로 저장된 객체의 width 프로퍼티를 가리킨다.
이곳에서 논의하는 배열은 3.5절에서 설명된 연관 배열과는 다르다는 것을 유념하라.

 

우리가 지금 여기서 논의하는 일반적인 배열은 음수가 아닌 정수로 인덱싱 된다.

반면에 연관 배열은 문자열로 인덱싱된다. 또한 자바스크립트가 배열의 배열 형태 말고는 다차원 대별을

지원하지 않는다는 점을 유의하라. 마지막으로 자바스크립트는 타입의 제약이 없는 언어이므로,

자바 언어처럼 배열의 원소들이 모두 동일한 타입을 가질 필요는 없다.

 

배열에 관해서는 7장에서 더 논의한다.


 

 

1. 배열 생성

 

배열은 Array() 생성자 함수로 생성할 수 있다.

일단 배열을 생성하고 나면, 배열의 어떤 인덱스에라도 얼마든지 엘리먼트를 할당할 수 있다.

 

var a = new Array();
a[0] = 1.2;
a[1] = "javascript";
a[2] = true;
a[3] = { x:1, y:3 };


배열 원소들을 Array() 생성자에 넘겨주어 배열을 초기화할 수도 있다.

때문에 앞의 배열 생성과 초기화 코드는 다음과 같이 재작성할 수 있다.

 

var a = new Array(1.2, "javascript", true, { x:1, y:3});


Array() 생성자에 숫자 하나를 넘겨주면 그 숫자는 배열의 크기로 사용된다.

따라서 다음 코드는

 

var a = new Array(10);


정의되지 않은 원소 10개를 포함한 새 배열을 생성한다. .

 

 

 

2. 배열 리터럴 생성

 

자바스크립트는 배열을 생성하고 초기화하는 리터럴 문법을 제공한다. 배열 리터럴(혹은 배열 초기자)은

대괄호로 둘러싸인 쉼표로 구분된 값들의 목록이다. 대괄호 내 값들은 0부터 시작하는 배열 인덱스에

차례대로 할당된다. 예를 들어, 아ㅠ 절에서 본 배열 생성과 초기화 코드는 다음과 같이 작성할 수도 있다.

 

var a = [1.2, "javascript", true, { x:1, y:3 });


객체 리터럴처럼 배열리터럴도 중첩될 수 있다.

var matrix = [ [1,2.3], [4,5,6], [7,8,9] ];


또한 객체 리터럴과 마찬가지로 배열 리터럴 내 요소로 임의의 표현식이 올 수 있으며

반드시 상수일 필요는 없다.

 

var base = 1024;
var table = [base, base+1, base+2, base+3];


쉼표 사이에 값을 생략하여 정의되지 않은 요소를 배열 리터럴 내에 포함시킬 수 있다.

예를 들어, 다음 배열에는 정의되지 않은 요소 세 개를 포함하여 총 다섯개의 배열 요소가 있다.

 

var sparseArray = [1,,,,5];