맵과 셋

  • 객체 : 키가 있는 컬렉션을 저장함
  • 배열 : 순서가 있는 컬렉션을 저장함

위의 두 자료구조만으론 부족해 맵과 셋이 등장하게 되었습니다

 

맵은 키가 있는 데이터를 저장한다는 점에서 객체와 유사합니다.

하지만 은 키에 다양한 자료형을 허용한다는 점에서 차이가 있습니다.

 

예시

맵은 객체와 달리 키를 문자형으로 변환하지 않습니다. 키엔 자료형 제약이 없습니다

 

맵의 메서드와 프로퍼티

  • new Map()
    • 맵을 만듭니다.
  • map.set(key, value)
    • key를 이용해 value를 저장합니다.
  • map.get(key)
    • key에 해당하는 값을 반환합니다. key가 존재하지 않으면 undefined를 반환합니다.
  • map.has(key)
    • key가 존재하면 true, 존재하지 않으면 false를 반환합니다.
  • map.delete(key)
    • key에 해당하는 값을 삭제합니다.
  • map.clear()
    • 맵 안의 모든 요소를 제거합니다.
  • map.size
    • 요소의 개수를 반환합니다.

 

셋은 중복을 허용하지 않는 값을 모아놓은 특별한 컬렉션입니다. 셋에 키가 없는 값이 저장됩니다.

 

셋의 메서드

  • new Set(iterable)
    • 셋을 만듭니다. 이터러블 객체를 전달받으면(대개 배열을 전달받음) 그 안의 값을 복사해 셋에 넣어줍니다.
  • set.add(value)
    • 값을 추가하고 셋 자신을 반환합니다.
  • set.delete(value)
    • 값을 제거합니다. 호출 시점에 셋 내에 값이 있어서 제거에 성공하면 true, 아니면 false를 반환합니다.
  • set.has(value)
    • 셋 내에 값이 존재하면 true, 아니면 false를 반환합니다.
  • set.clear()
    • 셋을 비웁니다.
  • set.size
    • 셋에 몇 개의 값이 있는지 세줍니다.

예시

let set = new Set();

let john = { name: "John" };
let pete = { name: "Pete" };
let mary = { name: "Mary" };

// 어떤 고객(john, mary)은 여러 번 방문할 수 있습니다.
set.add(john);
set.add(pete);
set.add(mary);
set.add(john);
set.add(mary);

// 셋에는 유일무이한 값만 저장됩니다.
alert( set.size ); // 3

for (let user of set) {
  alert(user.name); // // John, Pete, Mary 순으로 출력됩니다.
}

 

 

 에 반복 작업을 할땐 해당 컬렉션에 요소 나 값을 추가한 순서대로 반복 작업이 수행됩니다.

따라서 이 두 컬렉션은 정렬이 되어있지 않다고 할 수 없습니다.

하지만 컬렉션 내 요소나 값을 재 정렬하거나 숫자를 이용해 특정 요소나 값을 가지고 오는 것은 불가능합니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기