
배열(Array)이란? 여러 개의 값을 순차적으로 나열한 자료구조
자료구조에서 말하는 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조를 말한다.
const arr = [1, 2, 3, 'hello', { key: 'value' }];
const arr = new Array(1, 2, 3);
Array.of 메서드는 전달된 인수를 요소로 갖는 배열을 생성한다.Array.of(1) // [1]
Array.of(1,2,3) // [1, 2, 3]
Array.of('string') // ['string']
Array.from 메서드는 유사 배열 객체 또는 이터러블 객체를 인수로 전달받아 배열로 변환하여 반환한다.Array.from을 사용하면 두 번째 인수로 전달한 콜백 함수를 통해 값을 만들면서 요소를 채울 수 있다.Array.from({ length: 2, 0: 'a', 1: 'b' }); // ['a', 'b']
Array.from({ length: 3 }, (_, i) => i); // [0, 1, 2]
Array.isArray([]); // true
Array.isArray({}); // false
const arr = [1, 2, 3, 4];
arr.indexOf(3); // 2
const arr = [1, 2, 3, 4];
arr.push(5, 6); // 반환값: 6
console.log(arr); // [1, 2, 3, 4, 5, 6]
const arr = [1, 2, 3, 4];
arr.pop(); // 반환값: 4
console.log(arr); // [1, 2, 3]
pop, push 메서드를 사용하면 스택을 쉽게 구현할 수 있다.
※ Stack(스택): 데이터를 마지막에 밀어 넣고, 마지막에 밀어 넣은 데이터를 먼저 꺼내는 후입 선출(LIFO - Last In First Out) 방식의 자료구조
const arr = [1, 2, 3, 4];
arr.push(0); // 5
console.log(arr); // [0, 1, 2, 3, 4]
const arr = [1, 2, 3, 4];
arr.shift(); // 반환값: 1
console.log(arr); // [2, 3, 4]
shift, pop 메서드를 사용하면 큐를 쉽게 구현할 수 있다.
※ Queue(큐): 데이터를 마지막에 밀어 넣고, 처음 데이터, 즉 가장 먼저 밀어 넣은 데이터를 먼저 꺼내는 선입선출(FIFO - First In First Out) 방식의 자료구조
const arr1 = [1, 2];
const arr2 = [3, 4];
const result = arr1.concat(arr2);
console.log(arr1, arr2, result); // [1, 2] [3, 4] [1, 2, 3, 4]
start인덱스부터 count개의 요소를 제거하고 그 자리에 새로운 요소 items를 삽입한다.const arr = [1, 2, 3, 4]
const change = arr.splice(1, 2, 20, 30);
console.log(change); // [2, 3]
console.log(arr); // [1, 20, 30, 4]
start인덱스부터 end인덱스 이전 까지 복사하여 반환한다.const arr = [1, 2, 3, 4];
const result = arr.slice(1, 3);
console.log(result); // [2, 3]
console.log(arr); // [1, 2, 3, 4]
const arr = ['h', 'e', 'l', 'l', 'o'];
arr.join(); // 'h,e,l,l,o'
arr.join(''); // 'hello'
const arr = [1, 2, 3];
const change = arr.reverse();
console.log(change); // [3, 2, 1]
console.log(arr); // [3, 2, 1]
value을 start인덱스부터 end인덱스 이전까지 요소로 채운다.const arr = [1, 2, 3, 4];
arr.fill(0);
console.log(arr); // [0, 0, 0, 0]
const arr = [1, 2, 3, 4];
arr.fill(5, 1); // 인덱스 1부터 끝까지 채우기
console.log(arr); // [1, 5, 5, 5]
const arr = [1, 2, 3, 4];
arr.fill(9, 1, 3); // 인덱스 1부터 3 전까지 채우기
console.log(arr); // [1, 9, 9, 4]
const arr = [1, 2, 3, 4];
console.log(arr.includes(2)); // true
console.log(arr.includes(5)); // false
const arr = [1, 2, 3, 4, 2];
console.log(arr.includes(2, 2)); // true (인덱스 2부터 검색, 2가 존재함)
console.log(arr.includes(1, 1)); // false (인덱스 1 이후에 1은 없음)
const arr = [1, 2, [3, 4]];
const flatArr = arr.flat();
console.log(flatArr); // [1, 2, 3, 4]
const arr = [1, 2, [3, 4, [5, 6]]];
const flatArr = arr.flat(2); // 2단계 깊이까지 평탄화
console.log(flatArr); // [1, 2, 3, 4, 5, 6]
const arr = [1, [2, [3, [4, [5]]]]];
const flatArr = arr.flat(Infinity); // 모든 깊이 평탄화
console.log(flatArr); // [1, 2, 3, 4, 5]