- 기본 문법
let arr = [배열요소1, 배열요소2,...];
let arrLit = [1, true, "JavaScript"]; // 1,true,JavaScript
기본 문법
new Array(element0, element1[, ...[, elementN]]) new Array(arrayLength)
매개변수
elementN
: 배열을 생성할 때 채워넣을 요소. 단, 항목이 하나 뿐이며 그 항목의 자료형이 숫자일 경우arrayLength
매개변수로 간주한다.arrayLength
:Array
생성자에 제공한 유일한 매개변수가 0에서 2^32-1(4,294,967,295) 이하의 정수인 경우,length
속성이 해당값인 새로운 배열을 생성한다. 단, 이렇게 생상한 배열은arrayLength
만큼의 빈 슬롯(empty
)을 가지는 것으로, 실제undefined
를 채우는 것이 아니다.
[]
)과 같다.new Array(); // []
전달된 인수가 1개이고 숫자인 경우 length
프로퍼티 값이 인수인 배열을 생성한다. 즉, 전달한 수만큼의 길이를 가지는 빈(empty
) 배열을 생성한다.
이때 생성된 배열은 희소 배열이다. length
프로퍼티 값은 0이 아니지만 실제로 배열의 요소는 존재하지 않는다.
let arr = new Array(10);
console.log(arr); // [empty * 10]
console.log(arr.length); // 10
// 전달된 인수가 2개 이상이면 인수를 요소로 갖는 배열을 생성한다.
new Array(1, 2, 3); // [1, 2, 3]
// 전달된 인수가 1개지만 숫자가 아니면 인수를 요소로 갖는 배열을 생성한다.
new Array('a'); // ['a']
new 연산자 없이 Array 생성자 함수 사용
Array
생성자 함수는new
연산자와 함께 호출하지 않더라도, 즉 일반 함수로서 호출해도 생성하는 생성자 함수로 동작한다. 이는Array
생성자 함수 내부에서new.target
을 확인하기 때문이다.Array(1, 2, 3); // [1, 2, 3]
Array.of
메서드는 전달된 인수를 요소로 갖는 배열을 생성한다. Array.of
는 Array
생성자 함수와 다르게 전달된 인수가 1개이고 숫자이더라도 인수를 요소로 갖는 배열을 생성한다.Array.of(1); // [1]
Array.of(1, 2, 3); // [1, 2, 3]
Array.of('string'); // ['string']
Array.from
메서드는 유사 배열 객체(array-like object) 또는 반복 가능한 객체(iterable object)를 인수로 전달받아 배열로 변환하여 반환한다.// 유사 배열 객체를 변환하여 배열을 생성한다.
Array.from({ length: 2, 0: 'a', 1: 'b' }); // ['a', 'b']
// Array.from에 length만 존재하는 유사 배열 객체를 전달하면 undefined 요소로 채운다.
Array.from({ length: 3 }); // [undefined, undefined, undefined]
// 이터러블을 변환하여 배열을 생성한다.
Array.from('Hello'); // ['H', 'e', 'l', 'l', 'o']
Array.from
을 사용하면 두 번째 인수로 전달한 콜백 함수를 통해 값을 만들면서 요소를 채울 수 있다.
Array.from
메서드는 두 번째 인수로 전달한 콜백 함수에 첫 번째 인수에 의해 생성된 배열의 요소값과 인덱스를 순서대로 전달하면서 호출하고, 콜백 함수의 반환값으로 구성된 배열을 반환한다.
// Array.from은 두 번째 인수로 전달한 콜백 함수의 반환값으로 구성된 배열을 반환한다.
Array.from({ length: 3 }, (_, index) => index); // [0, 1, 2]
{Array.from({ length: numPages }, (_, idx) => (
<button key={idx + 1} onClick={() => setPage(idx + 1)}>
{idx + 1}
</button>
))}
[]
연산자를 사용한다.
- 기본 문법
배열이름[인덱스]
let fruits = ["사과", "오렌지", "자두"];
fruits[0]; // 사과
fruits[1]; // 오렌지
fruits[2]; // 자두
let fruits = ["사과", "오렌지", "배"];
fruits[3] = '레몬'; // 배열이 ["사과", "오렌지", "배", "레몬"]으로 바뀜
fruits[2] = '포도'; // 배열이 ["사과", "오렌지", "포도"]로 바뀜
index
의 요소를 지우지만 자리는 남겨두기 때문에 배열의 길이는 변하지 않는다.
- 기본 문법
delete 배열이름[index]
let fruits = ["사과", "오렌지", "배"];
delete fruits[1]
console.log(fruits) // ['사과, empty ,'배']
length
프로퍼티를 사용하면 배열에 담긴 요소가 몇 개인지 알 수 있다.let fruits = ["사과", "오렌지", "배"];
fruits.length; // 3
(O) arr.length === 0
(X) arr === [] // 틀린 이유 : 자바스크립트에서 두 배열을 "주소가 다른 두 개의 빈 배열"이라고 생각하기 때문이다.