Post

new Map()

#Map()

  • 다양한 자료형의 key를 허용하고, key-value 형태의 자료형으로 이루어진 콜렉션
  • Object와 비교해 다양한 key 사용이 가능함
  • 키-쌍과 키의 원래 삽입 순서(index)를 기억
  • 의도를 명확히 드러낸 메소드를 사용해서 접근, 수정, 삭제 등을 할 수 있음
  • Object(객체)는 keys()values() 등을 사용해 크기를 확인할 수 있지만, Map은 size()를 사용해 쉽게 확인할 수 있음

new Map()

  • 새로운 Map을 생성
1
2
const map = new Map();
console.log(map); // Map(0) {}

Map.set(key,value)

  • 새로운 요소 추가
  • key를 이용해 value를 저장
  • Map(1) {key => value}
1
2
3
// 문자형 키
const map = new Map();
map.set("1", "str1"); // Map(1) {'1' => 'str1'}
1
2
3
// 숫자형 키
const map = new Map();
map.set(1, "num1"); // Map(1) {1 => 'num1'}
1
2
3
// 불린형 키
const map = new Map();
map.set(true, "bool1"); // Map(1) {true => 'bool1'}

Map.get(key)

  • key 값으로 요소에 접근하기
  • 객체와 달리 key를 문자형으로 변환하지 않음
1
2
3
const map = new Map();
map.set("name", "hyemin");
map.get("name"); // 'hyemin'
1
2
3
4
// number type의 key를 그대로 사용
const map = new Map();
map.set(1, "number1");
map.get(1); // "number1"

Map.size

  • 요소 갯수 확인
1
2
3
4
5
6
7
const map1 = new Map();

map1.set("a", 1);
map1.set("b", 2);
map1.set("c", 3);

map1.size; // 3

Map.has(key)

  • 요소가 존재하는지 확인
  • true, false 값 반환
1
2
3
4
5
6
7
8
const map1 = new Map();

map1.set("a", 1);
    .set("b", 2);
    .set("c", 3);

map1.has("a"); // true
map1.has("z"); // false

Map.delete(key)

  • key에 해당하는 값을 삭제
1
2
3
4
5
6
7
8
const map1 = new Map();

map1.set("a", 1);
    .set("b", 2);
    .set("c", 3);

map1.delete("a");
console.log(map1); // Map(2) {'b' => 2, 'c' => 3}

Map.clear()

  • 요소 전체 삭제
1
2
3
4
5
6
7
8
const map = new Map();

map1.set("a", 1);
    .set("b", 2);
    .set("c", 3);

map1.clear();
console.log(map1); // Map(0) {size: 0}

Map() 반복문 (for-of)

map.keys()

  • 각 요소의 를 모은 반복 가능한 객체를 반환
1
2
3
4
5
6
7
8
9
10
11
12
const recipeMap = new Map([
  ["cucumber", 500],
  ["tomatoes", 350],
  ["onion", 50]
]);

for (let vegetable of recipeMap.keys()) {
  console.log(vegetable);
}
// cucumber
// tomatoes
// onion

map.values()

  • 각 요소의 을 모은 반복 가능한 객체를 반환
1
2
3
4
5
6
7
8
9
10
11
12
const recipeMap = new Map([
  ["cucumber", 500],
  ["tomatoes", 350],
  ["onion", 50]
]);

for (let amount of recipeMap.values()) {
  console.log(amount);
}
// 500
// 350
// 50

map.entries()

  • 요소의 [키, 값]을 한 쌍으로 하는 반복 가능한 객체로 반환
1
2
3
4
5
6
7
8
9
10
11
12
const recipeMap = new Map([
  ["cucumber", 500],
  ["tomatoes", 350],
  ["onion", 50]
]);

for (let entry of recipeMap) {
  console.log(entry);
}
//  (2) ['cucumber', 500]
//  (2) ['tomatoes', 350]
//  (2) ['onion', 50]

map.entires()과 동일

1
2
recipeMap.entries();
// MapIterator {'cucumber' => 500, 'tomatoes' => 350, 'onion' => 50}

forEach() 사용

1
2
3
4
5
6
recipeMap.forEach((value, key, map) => {
  console.log(`${key}: ${value}`);
});
// cucumber: 500
// tomatoes: 350
// onion: 50

참고사이트

This post is licensed under CC BY 4.0 by the author.