본문 바로가기
IT지식/Web, Server

[Javascript] ES6 컬렉션

by five-sun 2023. 2. 13.
728x90

ES6

프로그래밍 언어에서 Collection이란?

프로그래밍 언어가 제공하는 값을 담을 수 있는 컨테이너

 

Java에서 ArrayList, HashMap, HashSet, Queue, Stack 등이 존재한느 것처럼 Javascript에도 컬렉션들이 존재한다.

ES5 에선 Object와 Array만이 존재 하였지만 ES6 부터 Arrays, Typed Array / Object, Map, Set, Weak Map, Weak Set이 존재한다.

 

특정 상황에서 ES6의 컬렉션들을 사용할 시 기존의 컬렉션들을 사용하는 것 보다 최적화된 구현체를 제공한다.

 

- Set

Value를 키 값으로 갖는 컬렉션으로 수정 가능하며, 프로그램이 실행되는 동안 값의 추가나 삭제가 가능하다.

Set과 Array는 비슷하지만 차이점이 존재한다.

  • 값이 중복되지 않는다.
  • 어떤 데이터가 자신의 멤버인지 확인하는 작업을 빨리 처리하려는 목적을 가지고 데이터를 관리한다.
  • Set은 인덱스 값으로 데이터를 조회할 수 없다.

 

- Map

Key - Value의 쌍으로 이루어진 컬렉션으로 기존의 Object로는 해결 할 수 없는 문제점을 해결할 수 있다.

  • 객체의 키로 내장 메소드의 이름을 사용할 시 이름 충돌이 일어날 수 있다.
  • 속성의 Key는 항상 문자열이어야 한다.
  • 객체에 얼마나 많은 속성이 존재하는지 알아낼 수 있는 효과적인 방법이 없다.
  • 일반 객체를 반복하려면 많은 비용이 소모된다.

- Weak Collections

Map과 Set이 참조하는 객체들은 강하게 연결되어 있기 때문에 가비지 컬렉션이 메모리 수거를 못하게 막는 원인이 된다. 크키가 큰 Collections의 객체가 더 이상 사용되지 않는다면 가비지 컬렉션에서 이것을 처리하기 위해 비싼 비용을 치뤄야 한다. 이것을 해결하기 위해서 ES6에서는 Weak Map, Weak Set이 나오게 되었다.

Weak Map은 Map과 Weak Set은 Set과 비슷하다. 단지 메서드 몇개의 차이와 가비지 컬렉션의 처리가 다르다.

728x90