Collection in JavaScript

Haz·2023년 11월 17일
0

개발여행기

목록 보기
13/24
post-thumbnail

❔ Collection

구조 또는 비구조화된 형태로 프로그래밍 언어가 제공하는 값을 담을 수 있는 공간

프로그래밍 언어마다 다르지만, 각 언어마다 데이터를 저장하는 데이터 구조 종류들이 있다. JavaScript에도 두 종류로 분류하여 여러 컬렉션이 구현되어있다.

💡 Indexed Collection - Array, [Typed Array](https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Typed_arrays) Keyed Collection - Object, Map, Set, [WeakMap](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/WeakMap), [WeakSet](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/WeakSet)

컬렉션의 분류는 ‘무엇을 기준으로 내부 요소를 반환하는가?’ 인데, 그에 따라 Index로 반환하는 것과 Key로 반환하는 두 분류로 나뉘었다. 이 중 Map, Set, WeakMap, WeakSet, TypedArray 는 ES6 문법에서 함께 도입됐다.

컬렉션은 내부적으로 Iterator를 가지고 있어서 반복이 가능하며 아래의 기능들을 사용할 수 있다.

  • for...of 루프
  • spread 연산자 (...)
  • 분해대입(destructuring assignment)
  • 기타 iterable을 인수로 받는 함수

🗝 Keyed Collection

1. Set: value만을 저장하며 중복을 허용하지 않는 Collection

// 생성자
const set = new Set();
const reduplicatedSet = new Set([1,1,2,3,4,5]); // Set(5) {1,2,3,4,5}
const strSet = new Set("Common"); // Set(4) {'C', 'o', 'm', n'}

특징

  • Value를 Key로 갖는다.
  • 수정 가능하며 값의 추가, 삭제가 가능하다.
  • 중복되는 값은 추가하지 않는다.
  • 특정 값을 가지고 있는지 확인하는 작업의 처리가 빠르다.
  • 순서가 없어 index 값으로 데이터를 조회하지 못한다.

Method

  • new Set()
  • size: 가지고 있는 값의 수 반환
  • has(): 특정 값의 유무 확인
  • add(): 값을 추가
  • delete(): 값을 삭제
  • forEach()
  • clear(): 모든 값을 삭제
  • keys(), value(): value만 존재하고 key가 없으므로 같은 결과 호출

2. Map: 다양한 자료형의 key를 허용하는 key-value 형태의 Collection

// 생성자
const map = new Map();

map.set("place", "Seoul");
map.set("day", 230815);
map.set("menu", [['juice', 4000], ['americano', 1500]]);

****일반 객체와 다른 점****

  • 속성의 Key가 문자열이 아니어도 된다.
  • 일반 객체에는 length, size와 같은 속성이 없다.
  • 일반 객체는 무겁기 떄문에 비용이 많이 소모된다.

Method

  • new Map()
    • new Map(entries): entries를 Map 생성자를 이용해 map으로 생성
  • size: 가지고 있는 요소의 수 반환
  • get(): key를 활용해 요소 접근
  • set(): 요소 추가
  • delete(): 요소 삭제
  • clear(): 전체 삭제
  • has(): key 존재 여부 확인
  • keys(): key 확인
  • values(): value 확인
  • entries(): key-value 확인
  • Object.fromEntries(map 이름): map을 object로 형 변환

🗝 Keyed Collection 中 Weak Collections

Map, Set이 참조하는 객체들은 강하게 연결되어있어 가비지 컬렉터가 메모리 수거를 하지 못한다. Map, Set도 크기가 크기 때문에 더이상 쓰지 않을 경우에는 메모리에서 삭제하기 쉽도록 나온 것이 WeakMap, WeakSet이다.

그러므로 Map, Set과 근본적으로 크게 다르지 않으나 포함된 메소드 유무에 약간의 차이가 있을 뿐이다.

profile
나도 재밌고, 남들도 재밌는 서비스 만들어보고 싶다😎

0개의 댓글