Map / Set

..·2023년 4월 5일
0
post-thumbnail

Map / Set

  • JS -> 객체, 배열 : 많고 다양하고 복잡한 프로그램을 만들어왔다

  • 그럼에도 불구하고 현실세계를 반영하기에는 많이 어려움

  • 추가적인 자료구조가 등장함. (Map, Set)

  • Map, Set의 목적 : 데이터의 구성, 검색, 사용을 효율적으로 처리 > 기준의 객체 또는 배열보다

Map

  • Key - Value
  • Key에 어떤 데이터타입(유형)도 다 들어올 수 있다.
  • Map은 키가 정렬된 순서로 저장되기 때문이다.
  • 기능 > 검색, 삭제, 제거, 여부 확인
const myMap = new Map();
myMap.set('key', 'value');

//...
//...

myMap.get('key')
  • 반복이라는 개념이 Map에서 매우 중요하다. method : keys,values, entries
  • iterator: 반복자
    • 요소 하나하나를 반복할 수 있도록 배열 또는 객체와 비슷한 형태로 열거되어있는 자료구조라고 이해할 수 있음 (데이터를 조회해주는 객체라고 생각해도 될까?)

    • my

    • Map.key() 가 반환하는 값이 iterator

      const myMap = new Map();
      myMap.set("one", 1);
      myMap.set("two", 2);
      myMap.set("three", 3);
      
      console.log(myMap.keys()); //[Map Iterator] { 'one', 'two', 'three' }
      for (const key of myMap.keys()) {
        console.log(key);
        // one;
        // two;
        // three;
      }
      
      console.log(myMap.values()); //[Map Iterator] { 1, 2, 3 }
      for (const value of myMap.values()) {
        console.log(value);
        // 1;
        // 2;
        // 3;
      }
      
      console.log(myMap.entries()); //[Map Entries] { [ 'one', 1 ], [ 'two', 2 ], [ 'three', 3 ] }
      for (const entry of myMap.entries()) {
        console.log(entry);
        // ["one", 1]
        //[("two", 2)]
        // [("three", 3)];
      }
      
      console.log(myMap.size); //map의 사이즈(길이)
      //3
      console.log(myMap.has("two")); //key 기반 검색
      //true

Set

  • 고유한 값을 저장하는 자료구조다.
  • 값만 저장한다.
  • 키를 저장하지는 않는다.
  • 값이 중복되지 않는 유일한 요소로만 구성된다.
  • 값 추가, 검색, 값 삭제, 모든 값 제거, 존재 여부 확인
const mySet = new Set();
mySet.add("value1");
mySet.add("value2");
mySet.add("value3");
mySet.add("value5");
mySet.add("value8");

console.log(mySet.size); //5
console.log(mySet.has("value1")); //true
console.log(mySet.has("value2")); //true
console.log(mySet.has("value3")); //true

//Iterator
for (const value of mySet.values()) {
  console.log(value);
  // value1;
  // value2;
  // value3;
  // value5;
  // value8;
}

// 교집합, 차집합으로 흉내(simulate)낼 수 있다, 이 부분도 찾아보기

0개의 댓글