여러 개의 값을 순차적으로 나열한 자료구조
const arr = ['apple', 'banana', 'orange'];
배열이 가지고 있는 값
배열에서 배열의 요소의 위치 (0 이상의 정수)
배열의 요소가 하나의 데이터 타입으로 통일되어 있고 연속적으로 인접
배열 요소 각각의 메모리 공간은 서로 다를 수 있고 연속적이지 않을 수 있음
const arr = [1, 2, 3];
console.log(arr.length);
const arr = new Array(10);
console.log(arr); // [empty × 10]
console.log(arr.length); // 10
// 전달된 인수가 1개이고 숫자이더라도 인수를 요소로 갖는 배열을 생성한다.
Array.of(1); // -> [1]
Array.of(1, 2, 3); // -> [1, 2, 3]
Array.of('string'); // -> ['string']
// 유사 배열 객체를 변환하여 배열을 생성한다.
Array.from({ length: 2, 0: 'a', 1: 'b' }); // -> ['a', 'b']
// 이터러블을 변환하여 배열을 생성한다. 문자열은 이터러블이다.
Array.from('Hello'); // -> ['H', 'e', 'l', 'l', 'o']
// Array.from에 length만 존재하는 유사 배열 객체를 전달하면 undefined를 요소로 채운다.
Array.from({ length: 3 }); // -> [undefined, undefined, undefined]
// Array.from은 두 번째 인수로 전달한 콜백 함수의 반환값으로 구성된 배열을 반환한다.
Array.from({ length: 3 }, (_, i) => i); // -> [0, 1, 2]
const arr = [0];
// 배열 요소의 추가
arr[1] = 1;
console.log(arr); // [0, 1]
console.log(arr.length); // 2
존재하지 않는 인덱스를 통해 값을 할당하면 새로운 요소가 추가된다.
동시에 length 프로퍼티의 값이 자동 갱신된다.
const arr = [1, 2, 3];
// Array.prototype.splice(삭제를 시작할 인덱스, 삭제할 요소 수)
// arr[1]부터 1개의 요소를 제거
arr.splice(1, 1);
console.log(arr); // [1, 3]
// length 프로퍼티가 자동 갱신된다.
console.log(arr.length); // 2