ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2023 - 05 - 21 자료구조 map과 set, 매서드, 반복자
    Today I Learned/TIL 05 2023. 6. 1. 07:22

    오늘 할일

    자바스크립트 2강 듣기

     

    오늘 배운것

    자료구조 (map , set) : map과set은 고유한 값을 저장하는 자료구조이다.

    map과 set는 기존의 배열(array)나 객체(object)보다 훨씬 더 효율적이다.

     

     

    1. Map
    key-value pair로 이뤄지므로 객체와 같음. 하지만! 객체는 key에 문자열 형태인 반면,

    Map은 key값 자리에 어떤 유형의 데이터 타입도 다 들어올 수 있다.


    왜냐하면 Map은 key가 정렬된 순서로 저장되기 때문이다.
    검색, 삭제, 제거(완전한 제거), 여부확인 기능 제공

    Map에서 key-value pair를 넣는 방식은 객체와는 다르다. 아래와 같이 넣는다.

    const myMap = new Map();
    myMap.set('key', 'value');    -> 할당하기(set)
    .
    .
    myMap.get('key')              -> 찾기(get), key값만 입력한다.
    
    console.log(myMap.get('key'));  //'value'값 출력.
    
    
    
    //set으로 key-value 설정을 하고, get으로 key로 검색을 한다. set과 get은 항상 pair다.

     

    new Map(); // 새로운 맵을 생성.
    
    map.set(key, value) // key값을 이용해 value 저장.
    
    map.get(key) // key에 해당하는 value값을 반환함. key가 없으면 undefined 나옴.
    
    map.has(key) // key가 존재하면 true, 존재하지 않으면 false (불리언타입)
    
    map.delete(key) // key에 해당하는 value값을 삭제함.
    
    map.clear() // 맵 안의 모든 요소를 제거함.
    
    map.size // 맵 안의 요소의 개수를 반환함.



    Map을 쓰는 이유는, 대량 데이터를 처리하기 위함이기 때문에 반복적을하는 부분이중요함.

    for - of 반복문을 돌림으로써 하나하나 쓸수 있게 해줌. (마치 forEach문 같음)

    For ... of 반복문 (반복자) iterator
    Map에서 반복을 말할때 iterator 개념이 중요함. (for - of 방식) : 

    반복을 위한 메소드 -> keys(),  values(),  entries()

     

    for (const 단수(key 또는 value 또는 entry) of 복수(keys 또는 values 또는 entries 또는 함수() ));

     

    단순 배열
    
    var iterable = [10, 20, 30];
    
    for (var value of iterable){
        console.log(value);
    }
    
    // 10 20 30
    const myMap = new Map();
    myMap.set('one', 1);
    myMap.set('two', 2);
    myMap.set('three', 3);
    
    for (const key of myMap.keys()){
        console.log(key);
    }
    
    for (const value of myMap.values()){
        console.log(value);
    }
    
    for (const entry of myMap.entries()){
        console.log(entry);
    }
    
    for (const entry of myMap.entries()){
        console.log(`${entry[0]} : ${entry[1]}`);
    }
    
    console.log(myMap.size); // 3 (요소가 3개이므로)
    console.log(myMap.has('two')) // true (해당요소를 포함함)
    
    
    // one two three
    // 1 2 3 
    // [ 'one', 1 ] [ 'two', 2 ] [ 'three', 3 ]
    // one : 1  two : 2  three : 3
    
    // entry[0]는 배열의 첫번째 요소인데 객체에서는 key값, 
    // entry[1]는 배열의 두번째 요소인데 객체에서는 value값.


    2. Set

    1. set은 고유한 값을 저장하는 자료구조이다.

    2. set은 "value 값"만 저장하고, key를 저장하지 않는다.

    3. set은 값이 중복되지 않는 유일한 요소로만 구성된다.
    4. 값 추가, 값 검색, 값 삭제, 모든 값 제거, 존재 여부 확인등을 하는 기능을 한다.

    Map은 key-value였던 반면, set은 value만 넣는다. (key는 저장하지 않는다.)
    Map에서는 keys, values, entries 모두 출력 가능한 반면, set은 value값만 넣기 때문에 values만 출력 가능하다.

    const mySet = new Set();
    mySet.add('value1');
    mySet.add('value2');
    
    console.log(mySet.size); // 2. set의 사이즈(길이) = 2개

     

    const mySet = new Set();
    mySet.add('value1');
    mySet.add('value2');
    mySet.add('value2');
    
    console.log(mySet.size); // 2.
    
    // set의 사이즈(길이) = 2개. (값이 3개 있지만, value2는 중복된다. 
    // set에서는 중복되지 않는 유일한 요소들만 카운트하므로 중복되는 것은 무시한다.)

     

    const mySet = new Set();
    mySet.add('value1');
    mySet.add('value2');
    mySet.add('value2');
    
    console.log(mySet.has['value1']); // true  
    console.log(mySet.has['value2']); // ture
    console.log(mySet.has['value3']); // false (value3은 없음)

     

    const mySet = new Set();
    mySet.add('value1');
    mySet.add('value2');
    mySet.add('value3');
    mySet.add('value5');
    mySet.add('value8');
    
    for (const value of mySet.values()) {
        console.log(value);
    } 
    
    
    
    // value1, value2, value3, value5, value8

     

    댓글

Designed by Tistory.