다차원 배열

Flash Player 9 이상, Adobe AIR 1.0 이상

다차원 배열에는 다른 배열이 요소로 포함됩니다. 예를 들어 문자열에 대한 인덱스 배열로 저장된 작업 목록을 생각해 보십시오.

var tasks:Array = ["wash dishes", "take out trash"];

별도의 작업 목록을 매일 저장하려는 경우 매일 하나의 요소를 사용하여 다차원 배열을 만들 수 있습니다. 각 요소에는 작업 목록을 저장하는 tasks 배열과 비슷한 인덱스 배열이 포함됩니다. 다차원 배열에서는 인덱스 배열이나 연관 배열을 조합하여 사용할 수 있습니다. 다음 단원의 예제에서는 두 개의 인덱스 배열이나 인덱스 배열의 연관 배열을 사용합니다. 필요한 경우 다른 조합을 시도해 볼 수도 있습니다.

두 개의 인덱스 배열

두 개의 인덱스 배열을 사용할 경우 결과를 표나 스프레드시트로 표시할 수 있습니다. 첫 번째 배열의 요소는 표의 행을 나타내며 두 번째 배열의 요소는 열을 나타냅니다.

예를 들어 다음 다차원 배열에서는 두 개의 인덱스 배열을 사용하여 요일별로 작업 목록을 추적합니다. 첫 번째 배열인 masterTaskList 는 Array 클래스 생성자를 사용하여 만들어집니다. 배열의 각 요소는 요일을 나타내며 인덱스 0은 월요일, 인덱스 6은 일요일을 나타냅니다. 이 요소를 표의 행이라고 생각할 수 있습니다. masterTaskList 배열에서 만든 7개의 요소에 대해 각각 배열 리터럴을 할당하여 각 요일의 작업 목록을 만들 수 있습니다. 배열 리터럴은 표의 열을 나타냅니다.

var masterTaskList:Array = new Array(); 
masterTaskList[0] = ["wash dishes", "take out trash"]; 
masterTaskList[1] = ["wash dishes", "pay bills"]; 
masterTaskList[2] = ["wash dishes", "dentist", "wash dog"]; 
masterTaskList[3] = ["wash dishes"]; 
masterTaskList[4] = ["wash dishes", "clean house"]; 
masterTaskList[5] = ["wash dishes", "wash car", "pay rent"]; 
masterTaskList[6] = ["mow lawn", "fix chair"];

배열 액세스( [] ) 연산자를 사용하여 모든 작업 목록에서 개별 항목에 액세스할 수 있습니다. 첫 번째 대괄호 세트는 요일을 나타내며 두 번째 대괄호 세트는 해당 요일에 대한 작업 목록을 나타냅니다. 예를 들어 수요일 목록에서 두 번째 작업을 검색하려면, 먼저 수요일에 해당하는 인덱스 2를 사용한 다음 목록에서 두 번째 작업을 나타내는 인덱스 1을 사용합니다.

trace(masterTaskList[2][1]); // output: dentist

일요일 목록에서 첫 번째 작업을 검색하려면 일요일에 해당하는 인덱스 6을 사용하고 목록에서 첫 번째 작업을 나타내는 인덱스 0을 사용합니다.

trace(masterTaskList[6][0]); // output: mow lawn

인덱스 배열을 포함한 연관 배열

개별 배열에 보다 쉽게 액세스할 수 있도록 하기 위해, 요일에는 연관 배열을 사용하고 작업 목록에는 인덱스 배열을 사용할 수 있습니다. 연관 배열을 사용하면 특정 요일을 참조할 때 도트 구문을 사용할 수 있지만, 이 경우 연관 배열의 각 요소에 액세스하기 위한 런타임 처리 시간이 길어집니다. 다음 예제에서는 작업 목록의 기본으로 요일별 키/값 쌍이 있는 연관 배열을 사용합니다.

var masterTaskList:Object = new Object(); 
masterTaskList["Monday"] = ["wash dishes", "take out trash"]; 
masterTaskList["Tuesday"] = ["wash dishes", "pay bills"]; 
masterTaskList["Wednesday"] = ["wash dishes", "dentist", "wash dog"]; 
masterTaskList["Thursday"] = ["wash dishes"]; 
masterTaskList["Friday"] = ["wash dishes", "clean house"]; 
masterTaskList["Saturday"] = ["wash dishes", "wash car", "pay rent"]; 
masterTaskList["Sunday"] = ["mow lawn", "fix chair"];

도트 구문을 사용하면 여러 개의 대괄호 세트를 사용하지 않아도 되므로 코드가 한결 읽기 쉬어집니다.

trace(masterTaskList.Wednesday[1]); // output: dentist 
trace(masterTaskList.Sunday[0]);// output: mow lawn

for..in 루프를 사용하여 작업 목록을 반복할 수 있지만 각 키와 연관된 값에 액세스하려면 도트 구문 대신 배열 액세스( [] ) 연산자를 사용해야 합니다. masterTaskList 는 연관 배열이기 때문에, 다음 예제와 같이 요소가 원하는 순서로 검색되지 않습니다.

for (var day:String in masterTaskList) 
{ 
    trace(day + ": " + masterTaskList[day]) 
} 
/* output: 
Sunday: mow lawn,fix chair 
Wednesday: wash dishes,dentist,wash dog 
Friday: wash dishes,clean house 
Thursday: wash dishes 
Monday: wash dishes,take out trash 
Saturday: wash dishes,wash car,pay rent 
Tuesday: wash dishes,pay bills 
*/