🔧CS 공부/🧭자료구조

[자료구조] 배열, 객체, Set, Map 간단하게 훑어보기!

주_Y 2025. 4. 13. 15:56

✨ 실무에서 자주 쓰는 자료구조 _ 배열, 객체, 집합(Set), Map

안녕하세요! 오늘은 CS 지식인 자료구조에 대해 글을 작성하고자 합니다!

수 많은 자료구조의 내용 중 프론트엔드가 실무에서 많이 사용하게 되는 네 가지 자료구조에 대해 작성해보고자 합니다!

  • 배열 (Array)
  • 객체 (Object)
  • 집합 (Set)
  • 맵 (Map)

개발을 하면서 이미 다들 꽤나 익숙해졌을 자료구조들이죠!
하지만 막상 코딩할 땐 "이럴 땐 뭘 써야 하지?" 고민될 때가 있어서, 각각 언제 어떻게 쓰면 좋은지 정리해보려고 합니다!


✅ 배열 (Array)

가장 기본적이면서 가장 많이 쓰는 자료구조입니다.
순서가 있는 데이터 목록을 다룰 때 정말 자주 등장해요.

const fruits = ['사과', '바나나', '포도'] 
console.log(fruits[1]) // 바나나

(배열의 순서는 0부터 시작합니다)

 

 

📌 특징

  • 순서 있음 (index 기반)
  • 중복 허용
  • 반복 처리에 최적화 (map, filter, forEach 등 활용 가능한 메서드 많음)

 

📌 언제 쓸까요?

  • 리스트 형태로 뭔가를 저장하고 순회할 때
  • 특정 조건으로 필터링하거나 정렬할 때
  • 결과 값을 쭉 모아서 보여줄 때
    ex) 쇼핑몰 상품 목록, 댓글 리스트 등

 


✅ 객체 (Object)

객체는 키-값 쌍으로 이루어진 데이터를 저장할 수 있습니다.
무언가를 "이름"이나 "속성"으로 관리하고 싶을 때 좋아요!

const user = { name: '주연', age: 25, isAdmin: true } 
console.log(user.name) // '주연'
 
 

📌 특징

  • 키는 문자열(또는 Symbol)만 가능
  • 순서가 중요하지 않은 경우에 적합
  • 속성 접근이 편함 (user.name 또는 user['name'])

 

📌 언제 쓸까요?

  • 사용자 정보 같은 속성 데이터를 저장할 때
  • 서버에서 받은 JSON 데이터 다룰 때
  • 컴포넌트 상태 객체로 관리할 때 (예: useState({}))

참고로 키가 문자열로 고정된다는 점 때문에 더 유연한 데이터 키를 쓰고싶다면 다음에 소개하는 Map을 사용하는게 더 나을 수 있습니다!

 


✅ 집합 (Set)

Set은 중복을 허용하지 않는 유일한 값들의 집합입니다.
배열과 비슷해 보이지만, 중복 제거가 자동으로 되는 게 큰 장점입니다!

const numbers = [1, 2, 2, 3] const unique = [...new Set(numbers)] 
console.log(unique) // [1, 2, 3]

 

📌 특징

  • 중복 없음
  • 순서 있음 (삽입 순서를 유지)
  • 값만 저장 가능 (키 없음)
  • add, has, delete 등의 메서드 사용 가능

 

📌 언제 쓸까요?

  • 배열에서 중복 제거할 때
  • 유일한 값 목록을 관리할 때
  • 값의 존재 여부를 빠르게 체크할 때 (set.has(value))

두 배열간의 교집합이나 차집합을 구할 때 set을 자주 사용합니다! => set은 중복을 제거하고, 빠른 검색이 가능하기 때문에!

 

  • 중복 제거: Set은 자동으로 중복된 값을 제거하므로, 배열 간의 교집합이나 차집합을 구할 때 중복된 요소를 손쉽게 처리할 수 있습니다.
  • 빠른 검색: Set은 해시 기반으로 구현되므로 요소 검색 속도가 빠릅니다. 배열을 순차적으로 비교하는 것보다 Set을 사용해 교집합이나 차집합을 더 효율적으로 구할 수 있습니다.

 

*해시값을 비교하면 검색 속도가 더 빠른 이유*

 

1. 해시는 복잡한 데이터를 숫자로 변환한 것입니다.

  • 문자열이나 객체처럼 비교하기 복잡한 데이터를 간단한 숫자로 바꾼 값이 해시값입니다.
  • 예: apple → 530 

2. 숫자 비교는 문자열 비교보다 훨씬 빠르다.

  • 컴퓨터는 문자열보다 숫자를 더 빠르게 처리합니다.
  • 문자열 "banana" vs "bandit"을 비교하려면 글자 하나씩 확인해야 하지만,
  • 해시값 609 vs 625는 한 번에 비교 가능!
  • 특히 숫자끼리 비교는 CPU 수준에서 즉시 가능함으로 더 빠르다!

 

 


✅ Map (맵)

Map은 객체처럼 키-값 쌍으로 데이터를 저장하지만, 객체보다 더 유연하고 기능이 많습니다.
특히 키로 어떤 타입이든 사용 가능하다는 점이 가장 큰 차이예요!!

const map = new Map() map.set('name', '주연') map.set({ id: 1 }, '데이터') 
console.log(map.get('name')) // '주연'
 
 

📌 특징

  • 키로 문자열 외에도 숫자, 객체 등 가능
  • 삽입 순서 유지
  • size, has, delete, clear 등 다양한 메서드 제공

 

📌 언제 쓸까요?

  • 동적으로 키를 관리해야 할 때
  • 복잡한 데이터를 키로 써야 할 때 (예: 객체를 키로)
  • 고성능 키-값 조회가 필요할 때

✅ 정리


자료구조 중복 키 타입 순서 특징
배열(Array) O 숫자(index) O 순서 있는 리스트
객체(Object) O 문자열 O 키-값 쌍 저장
Set X 없음 O 중복 없는 리스트
Map O 모든 타입 O 유연한 키-값 저장

 

 

 

 

 

 

 

 

 

 

썸네일