728x90

어리석게도

Map을 써야하는 때에도 계속해서 

객체를 써온것 같다.

 

기초를 다시 다지기위해

오래전 봤던 책을 다시 보는 과정에서

깨달은 바를 기록한다.

 

Map은 객체와 유사하고

Set은 배열과 유사하다.

 

Map

객체는 활용도가 높고 상당히 자유도가 부여되지만

그에따라 아래와 같은 문제가 있다.

1. 프로토타입 체인 때문에 의도치 않은 연결이 발생할 수 있다.

2. 객체 안에 연결된 키와 값이 몇개나 되는지 쉽게 알아낼 수 없다.

// 객체 예제
const object1 = {
  "height": 100,
  "width": 200
};

// 객체 크기
Object.keys(object1).length;

// Map 예제
const map1 = new Map();
map1
  .set("height", 100)
  .set("width", 200);
  
// Map 크기
map1.size;

3. 키는 반드시 문자열이나 심볼이어야 하므로 객체를 키로 써서 값과 연결할 수 없다.

// 객체
const object2 = {
  "user": "USER",
  "admin": "ADMIN"
};

// Map
const map2 = new Map();
map2
  .set("user", "USER")
  .set("admin", "ADMIN");
  
const guest = "unknown_001";
map2.set(guest, "GUEST");

4. 객체는 프로퍼티 순서를 전혀 보장하지 않습니다.

 

 

Set

Set은 배열과 유사하지만

중복을 허용하지 않는 데이터의 집합이라는

큰 장점이 있다.

 

다르게 말하면 Set에서는

중복 검사 자체가 필요없다는 뜻이다.

Set에서 중복 데이터를 add하면

해당 액션은 무시된다. (아무일도 일어나지 않음)

 

const users = new Set();
users
  .add("jaeky")
  .add("julia");

users.delete("jaeky");
users.size;
728x90
반응형