10.1 맵 (Map)

객체의 단점

  • 프로토타입 체인 때문에 의도하지 않은 연결이 생길 수 있음

  • 객체 안에 연결된 키와 값이 몇 개나 되는지 쉽게 알아낼 수 있는 방법이 없음

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

  • 객체는 프로퍼티 순서를 전혀 보장하지 않음

  • 객체의 결함을 모두 해결했음

  • 키와 값을 연결할 목적이라면 맵이 객체보다 더 나음

// 사용자 객체에 역할 부여
  const u1 = { name: 'Cynthia' };
  const u2 = { name: 'Jackson' };
  const u3 = { name: 'Olive' };
  const u4 = { name: 'James' };

  // 방법 1
  // 맵 생성
  const userRoles = new Map();

  // 사용자 역할 할당
  userRoles.set(u1, 'User');
  userRoles.set(u2, 'User');
  userRoles.set(u3, 'Admin');

  // set() 메서드는 체인으로도 가능
  userRoles
    .set(u1, 'User')
    .set(u2, 'User')
    .set(u3, 'Admin');

  // 방법 2
  // 생성자에 배열의 배열을 넘기는 형태로도 가능
  const userRoles2 = new Map([
    [u1, 'User'],
    [u2, 'User'],
    [u3, 'Admin'],
  ]);

get() 메서드

  • 맵에 존재하는 키의 값을 호출할 때 사용

  • 맵에 존재하지 않는 키에 get을 호출하면 undefined 반환

    • 맵에 키가 존재하는지 확인하려면? has() 메서드 사용

set() 메서드

  • 이미 존재하는 키에 set()을 호출하면 값을 변환할 수 있음

결과

size 프로퍼티

  • 맵의 요소 숫자를 반환

keys() 메서드

  • 맵의 키 반환

values() 메서드

  • 값을 반환

entries() 메서드

  • 첫 번째 요소가 키이고 두 번째 요소가 값인 배열을 반환

delete() 메서드

  • 맵의 요소를 지울 때 사용

clear() 메서드

  • 맵의 모든 요소를 지울 때 사용

Last updated