home강의 홈으로
Section 10. 이터러블과 제너레이터
Lesson 2. Map

👉 MDN 문서 보기


키와 값의 쌍으로 이루어진 컬렉션

  • 표준 내장 객체 중 하나

💡 객체와의 차이:

  • 이터러블의 일종 (이터러블의 기능 사용 가능)
  • 메서드와 프로퍼티 등의 기능 차이
  • 객체나 배열 등의 참조값을 키로 사용 가능
  • ⭐️ 키와 값을 보다 자주 변경하는 경우 적합하도록 설계됨

I. 기본 사용법

// Map 생성 const map1 = new Map(); // set 메서드 - 키와 값의 쌍 추가 map1.set('x', 1); map1.set(123, 'ABC'); map1.set(true, { a: 1, b: 2 }); console.log(map1); // [[키 쌍]...] 배열로 생성 + 초기화 const map2 = new Map([ ['x', 1], [123, 'ABC'], [true, { a: 1, b: 2 }], ]); console.log(map2); // 키의 중복 불허 - 해당 키 있을 시 덮어씀 map2.set('x', 2); console.log(map2); // has 메서드 - 요소 포함여부 확인 console.log ( map2.has('x'), map2.has('y') ); // get 메서드 - 값에 접근 console.log( map2.get('x'), map2.get(123), map2.get(true), // 없는 키로 접근시 map2.get('y') ); // 💡 참조값도 키로 사용 가능 const objKey = { x: 1, y: 2 }; const arrKey = [1, 2, 3]; map2.set(objKey, 'OBJ_KEY'); map2.set(arrKey, 'ARR_KEY'); console.log(map2); console.log ( map2.get(objKey), map2.get(arrKey), ); // ⚠️ [참조값]이 키임에 유의 // 💡 5-1강의 객체와 비교해 볼 것 console.log( map2.get({ x: 1, y: 2 }), map2.get([1, 2, 3]) ); // 때문에 이렇게 사용하면 안 됨 map2.set({x: 3, y: 4}, '못꺼냄'); console.log(map2); console.log( map2.get({x: 3, y: 4}) ); // delete 메서드 - 요소 제거 & 성공 여부 반환 console.log( map2.delete('x'), map2.delete(objKey), map2.delete({x: 3, y: 4}) ); console.log(map2); // add 메서드는 결과 맵을 반환 // 💡 메서드 체이닝을 할 수 있다는 의미 const map3 = map2 .set(1, 'X') .set(2, 'Y') .set(3, 'Z'); console.log(map2, map3); // size 프로퍼티 - 요소의 개수 console.log( map2.size ); // keys, values, entries 메서드 - 키 / 값 / [키, 값] 반환 console.log( map2.keys(), map2.values(), map2.entries() ); // clear 메서드 - 모든 요소들을 삭제 map2.clear(); console.log(map2, map3);



II. 이터러블로서의 Map

const arr = [ ['🐶', '강아지'], ['🐱', '고양이'], ['🐯', '호랑이'], ['🐵', '원숭이'], ['🐨', '코알라'] ]; const map = new Map(arr);

1. for ... of

for ([key, value] of map) { console.log(key, value); }

2. 스프레드 문법

const newArr = [...map]; console.log(newArr);

3. 디스트럭쳐링

const [x, y] = map; console.log(x); console.log(y); const [a, b, ...rest] = map; console.log(a); console.log(b); console.log(rest);

💡 이터러블과 별개 - forEach 메서드도 사용 가능

map.forEach(console.log); // 아래의 결과와 같음 // map.forEach((item, idx, set) => { // console.log(item, idx, set) // });

🤔얄코에게 질문하기질문은 반.드.시 이리로 보내주세요! ( 강의사이트 질문기능 ✖ )

강의에서 이해가 안 되거나 실습상 문제가 있는 부분,
설명이 잘못되었거나 미흡한 부분을 메일로 알려주세요!

답변드린 뒤 필요할 경우 본 페이지에
관련 내용을 추가/수정하도록 하겠습니다.

이메일 주소
yalco@yalco.kr
메일 제목 (반드시 아래 제목을 붙여넣어주세요!)
[질문] 제대로 파는 자바스크립트 (유료 파트) 10-2

🛑질문 전 필독!!

  • 구글링을 먼저 해 주세요. 들어오는 질문의 절반 이상은 구글에 검색해 보면 1분 이내로 답을 찾을 수 있는 내용들입니다.
  • 오류 메시지가 있을 경우 이를 구글에 복붙해서 검색해보면 대부분 짧은 시간 내 해결방법을 찾을 수 있습니다.
  • 강의 페이지에 추가사항 등 놓친 부분이 없는지 확인해주세요. 자주 들어오는 질문은 페이지에 추가사항으로 업데이트됩니다.
  • "유료파트의 강의페이지는 어디 있나요?" - 각 영상의 시작부분 검은 화면마다 해당 챕터의 강의페이지 링크가 있습니다.
  • 질문을 보내주실 때는 문제가 어떻게 발생했고 어떤 상황인지 등을 구체적으로 적어주세요. 스크린샷을 첨부해주시면 더욱 좋습니다.
🌏 Why not change the world?