안녕하세요, 코딩하는곰입니다! JavaScript를 다루다 보면 배열 조작은 정말 빈번하게 마주치는 작업인데요. 오늘은 배열의 앞뒤를 조작하는 네 가지 핵심 메서드인 push, pop, shift, unshift를 깊이 있게 파헤쳐보겠습니다. 이 메서드들을 제대로 이해하면 배열 처리에 대한 자신감이 크게 향상될 거예요. 실무에서 바로 적용할 수 있는 다양한 예제와 함정까지 함께 알아보도록 하겠습니다!
JavaScript에서 배열은 가장 기본적이면서도 강력한 자료구조 중 하나입니다. 배열을 효과적으로 다루기 위해서는 다양한 메서드들을 숙지하는 것이 필수적인데, 특히 배열의 앞뒤를 조작하는 메서드들은 실제 개발에서 매우 빈번하게 사용됩니다.
배열은 순서가 있는 값들의 집합으로, 인덱스를 통해 각 요소에 접근할 수 있습니다. JavaScript의 배열은 동적이라는 특징이 있어서 크기가 고정되어 있지 않고 필요에 따라 자유롭게 확장하거나 축소할 수 있습니다.
// 기본 배열 생성let fruits = ['사과', '바나나', '오렌지'];console.log(fruits); // ['사과', '바나나', '오렌지']
배열 메서드는 크게以下几 가지로 분류할 수 있습니다:
배열 메서드를 제대로 이해하지 못하면 코드가 불필요하게 길어지고 가독성이 떨어질 수 있습니다. 또한, 성능상의 이슈도 발생할 수 있어서 각 메서드의 특징과 적절한 사용 시기를 알고 있는 것이 중요합니다.
🤖 AI와 머신러닝 개발에 관심이 있다면, 파이썬 튜플 패킹과 언패킹 완벽 가이드 - 코딩하는곰의 심화解析를 참고해보세요.
push 메서드는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환합니다. 이 메서드는 원본 배열을 직접 변경합니다.
let numbers = [1, 2, 3];// 단일 요소 추가let newLength = numbers.push(4);console.log(numbers); // [1, 2, 3, 4]console.log(newLength); // 4// 여러 요소 한번에 추가newLength = numbers.push(5, 6, 7);console.log(numbers); // [1, 2, 3, 4, 5, 6, 7]console.log(newLength); // 7
let userLogs = [];function addUserLog(userAction) {userLogs.push({action: userAction,timestamp: new Date(),id: userLogs.length + 1});}addUserLog('로그인');addUserLog('페이지 방문');addUserLog('로그아웃');console.log(userLogs);// [// {action: '로 그인', timestamp: 2023-10-01T10:00:00.000Z, id: 1},// {action: '페이지 방문', timestamp: 2023-10-01T10:05:00.000Z, id: 2},// {action: '로그아웃', timestamp: 2023-10-01T10:10:00.000Z, id: 3}// ]
let arr1 = [1, 2, 3];let arr2 = [4, 5, 6];// spread operator와 push 조합arr1.push(...arr2);console.log(arr1); // [1, 2, 3, 4, 5, 6]
push 메서드는 일반적으로 O(1)의 시간 복잡도를 가지지만, JavaScript 엔진이 내부적으로 배열의 메모리를 재할당해야 하는 경우에는 일시적으로 성능이 저하될 수 있습니다. 대량의 데이터를 추가할 때는 한번에 여러 요소를 추가하는 것이 성능상 유리합니다.
// 비효율적인 방법for (let i = 0; i < 1000; i++) {array.push(i);}// 효율적인 방법array.push(...Array.from({length: 1000}, (_, i) => i));
