[JavaScript] 배열을 생성 및 초기화하는 방법
1차원 배열
let arr1 = new Array(5);
let arr2 = Array(5);
let arr3 = [];
console.log(typeof arr1); // object
console.log(typeof arr2); // object
console.log(typeof arr3); // object
console.log(arr1.length); // 5
console.log(arr2.length); // 5
console.log(arr3.length); // 0
console.log(arr1[0]); // undefined
console.log(arr2[0]); // undefined
console.log(arr3[0]); // undefined
1차원 배열은 다음의 세 가지 방법으로 생성할 수 있다.
- new 키워드를 통해 Array 생성자를 호출
- 생성자 호출이 아닌 Array 함수를 호출
- 빈 대괄호([ ])를 통해 빈 배열을 생성
위의 arr2 는 Array 함수를 통해 만들어진 배열이다. 링크에 따르면, 생성자가 아닌 Array 함수를 호출하게 되면, 함수 내부에서 생성자 호출을 통해 배열 객체를 새로 만든다고 한다. 따라서 배열 생성에 있어서는 new 키워드는 생략해도 될 것 같다.
배열은 길이를 주고 생성하면 모두 undefined(변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 결정되지 않은 상태)로 설정된다. 만약 생성과 동시에 원하는 값으로 초기화하고 싶을 경우, 아래와 같이 Array 내장 객체에 정의되어 있는 from
이라는 정적 함수를 사용하면 된다. from 은 첫 번째 파라미터로 주어진 객체를 통해 두 번째 파라미터로 주어지는 콜백 함수를 받아 리턴된 값으로 채워서 새로운 배열을 만드는 함수이다.
let arr = Array.from(Array(5), () => 0);
또는 인스턴스 함수 fill
을 통해 일정 값으로 배열을 채울 수 있다. 인스턴스 함수이므로, 객체를 생성하고 그 객체를 통해 함수에 접근해야 한다.
let arr = new Array(5).fill(0); // 길이가 5이고, 모든 요소를 0으로 초기화된 배열이 선언됨.
다차원 배열
Array 객체의 정적 메소드 from 이 모든 요소들 값을 채운 채로 새로운 배열을 반환한다는 점을 활용하면, 이를 중첩시켜서 다차원 배열을 만들 수 있게 된다.
아래는 3x3 크기의 2차원 배열을 선언하고, 모든 요소를 0으로 초기화하는 코드다.
let arr = Array.from(Array(3), () => Array.from(Array(3), () => 0));
아래는 3x3x3 크기의 3차원 배열을 선언하고 모든 요소를 0으로 초기화하는 코드다.
let map = Array.from(Array(3), () =>
Array.from(Array(3), () => Array.from(Array(3), () => 0))
);
댓글남기기