ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바스크립트 Chapter 24 Collections and Generators
    Computer Science/JavaScript 2019.05.17 21:36

     

    모든 자바스크립트 개발자가 알아야 하는 33가지 개념

     

    Chapter 24 Collections and Generators

     

    이번 장에서는 자바스크립트 컬렉션과 제너레이터를 살펴보자.

     

    Collections

     

    Map, Set, WeakMap and WeakSet을 공부해보자.

     

    Map

     

    Map은 Object와 마찬가지로 key로 지정된 데이터 항목의 Collection이다.

     

    Object와 다르게 Map은 모든 유형의 키를 허용한다.

     

    메서드를 알아보자.

     

    new Map() - map을 생성한다.

     

    map.set(key, value) - 키(key)로 값(value)을 저장한다.

     

    map.get(key) - key에 의해 값을 반환하고, key가 map에 없으면 undefined 반환한다.

     

    map.has(key) - key가 있으면 true, 없으면 false 반환한다.

     

    map.delete(key) - key로 값을 제거한다.

     

    map.clear() - map 지우기

     

    map.size - 현재 요소 수를 반환한다.

     

    let map = new Map()
    
    map.set('1', 'str1')
    map.set(1, 'num1')
    map.set(true, 'bool1')
    
    // 객체와 달리 키(key)는 문자열로 변환되지 않고 모든 유형의 키(key)가 가능하다.
    
    map.get(1) // 'num1'
    map.get('1') // 'str1'
    map.size // 3

     

    Set

     

    Set은 값의 Collection으로 각 값은 한 번만 발생할 수 있다.

     

    new Set(iterable) - 임의의 값 배열에서 집합(Set)을 만든다.

     

    set.add(value) - 값을 추가하고 집합 자체를 반환한다.

     

    set.delete(value) - 값을 제거하고, 호출 시점에 값이 존재하면 true 아니면 false 반환한다.

     

    set.has(value) - 값이 집합에 있으면 true 아니면 false 반환한다.

     

    set.clear() - set에서 모든 것을 제거한다.

     

    set.size - 요소 수

     

    정리해보면,

     

    Map - key 값의 collection(모음)

     

    Set - 고유한(unique) 값의 collection(모음)

     

    WeakMap - 객체를 key로 허용하고 다른 방법으로 접근할 수 없게되면,

     

    객체를 제거하는 Map의 변형이다.

     

    WeakSet - 객체를 저장하고 다른 방법으로 접근할 수 없게 되면,

     

    객체를 제거하는 Set의 변형이다.

     

    Generators

     

    제너레이터(Generators)는 반복자(iterator)를 



    제어하는 데 사용할 수 있는 함수다.  



    function 키워드 다음에 별표를 추가한다.

     

    function * generator() {}
    
    let generator = function * () {}

     

    function * generatorForExample(num) {
      for(let i = 0; i < num; i++) {
        yield console.log(i); // 
      }
    }
    
    const genForEx = generatorForExample(3);
    
    // next() 메서드는 yield 표현을 통해 yield된 값을 반환한다. 
    
    genForEx.next() // 0
    genForEx.next() // 1
    genForEx.next() // 2

    댓글 0