Programing/JavaScript

[JavaScript] JavaScript의 구조 분해와 스프레드 연산자

유니얼 2024. 12. 26. 01:11
728x90

JavaScript는 구조 분해(Destructuring)스프레드 연산자(Spread Operator)를 통해 데이터를 보다 효율적으로 다룰 수 있습니다. 이 문서에서는 이 두 가지 기능의 개념과 활용 방법을 설명합니다.


1. 구조 분해 할당(Destructuring)

구조 분해 할당은 배열이나 객체의 값을 쉽게 추출하여 변수에 할당하는 문법입니다.

1-1. 배열 구조 분해

배열의 값을 원하는 변수에 간단히 할당할 수 있습니다.

const arr = [1, 2, 3];
const [x, y, z] = arr;
console.log(x, y, z); // 1, 2, 3

특정 값 건너뛰기

const arr = [1, 2, 3];
const [first, , third] = arr;
console.log(first, third); // 1, 3

중첩 배열 구조 분해

const nested = [2, 4, [5, 6]];
const [i, , [j, k]] = nested;
console.log(i, j, k); // 2, 5, 6

1-2. 객체 구조 분해

객체의 속성을 변수로 추출할 수 있습니다.

const restaurant = {
    name: 'Super Pizza',
    location: 'Rome, Italy',
    opening: {
        mon: { open: 11, close: 22 },
        tue: { open: 10, close: 23 }
    }
};

const { name, location } = restaurant;
console.log(name, location); // Super Pizza, Rome, Italy

중첩된 객체 구조 분해

const { mon: { open, close } } = restaurant.opening;
console.log(open, close); // 11, 22

기본값 설정

const { fri = { open: 9, close: 18 } } = restaurant.opening;
console.log(fri); // { open: 9, close: 18 }

2. 스프레드 연산자(Spread Operator)

스프레드 연산자는 배열이나 객체의 요소를 펼치거나 복사하는 데 사용됩니다.

2-1. 배열에서의 스프레드 연산자

배열의 요소를 펼쳐 새로운 배열을 생성하거나 복사할 수 있습니다.

const arr = [1, 2, 3];
const newArray = [5, 6, ...arr];
console.log(newArray); // [5, 6, 1, 2, 3]

문자열 펼치기

const str = 'Owen';
console.log([...str]); // ['O', 'w', 'e', 'n']

2-2. 객체에서의 스프레드 연산자

객체의 속성을 펼치거나 복사할 수 있습니다.

const restaurantDetails = { name: 'Super Pizza', location: 'Rome, Italy' };
const extendedDetails = { ...restaurantDetails, rating: 4.5 };
console.log(extendedDetails);
// { name: 'Super Pizza', location: 'Rome, Italy', rating: 4.5 }

3. 나머지 매개변수(Rest Parameter)

나머지 매개변수는 함수 호출 시 전달된 나머지 인자들을 배열로 수집합니다.

예제

const add = function (...numbers) {
    let sum = 0;
    for (let i = 0; i < numbers.length; i++) {
        sum += numbers[i];
    }
    return sum;
};

console.log(add(2, 3)); // 5
console.log(add(2, 3, 4, 5)); // 14

배열 및 객체의 나머지 매개변수 활용

const [a, b, ...others] = [1, 2, 3, 4, 5];
console.log(others); // [3, 4, 5]

const { mon, ...weekdays } = restaurant.opening;
console.log(weekdays); // { tue: { open: 10, close: 23 } }

4. 구조 분해와 스프레드 연산자 활용 예제

배열 구조 분해와 스프레드 연산자

const restaurant = {
    name: 'Super Pizza',
    location: 'Rome, Italy',
    opening: {
        mon: { open: 11, close: 22 },
        tue: { open: 10, close: 23 }
    }
};


const [Pizza, , Risotto, ...otherFoods] = [...restaurant.mainMenu, ...restaurant.startMenus];
console.log(Pizza); // Pizza
console.log(Risotto); // Risotto
console.log(otherFoods); // ['Focaccia', 'Bruschetta', 'Garlic Bread']

객체 구조 분해와 스프레드 연산자

const restaurant = {
    name: 'Super Pizza',
    location: 'Rome, Italy',
    opening: {
        mon: { open: 11, close: 22 },
        tue: { open: 10, close: 23 }
    }
};


const { name, ...otherDetails } = restaurant;
console.log(name); // Super Pizza
console.log(otherDetails); 
// { location: 'Rome, Italy', opening: { ... } }

5. 요약

기능 설명 예시
구조 분해 배열/객체 데이터를 변수로 간단히 추출. const { a } = obj; / const [x] = arr;
스프레드 연산자 배열/객체 요소를 펼치거나 복사. [...arr] / { ...obj }
나머지 매개변수 함수 호출 시 전달된 나머지 인자를 배열로 수집. function(...args) {}

 

구조 분해와 스프레드 연산자는 JavaScript에서 데이터를 더 간결하고 직관적으로 다룰 수 있게 합니다. 이 두 가지 기능을 숙달하면 코드 가독성과 효율성이 크게 향상될 것입니다.

반응형