Map과 Set
Map
- key-value 형태를 가지고 있는 객체 자료형
let map = new Map(); //Map 생성
info
Map과 Object의 차이점
- Object의 key는 문자열 타입으로만 지정, Map의 key는 객체, 배열, 문자열 혹은 유효한 식별자(Number, Boolean 등) 가능
- Object는 크기를 Object의 메소드(
Object.keys()
,Object.values()
,Object.entries
)를 이용하여 직접 배열을 크기를 구해야한다. - Map은 size 메소드를 이용하여 크기 알 수 있다.
- Map은 데이터 추가, 삭제 작업이 Object보다 성능이 더 낫다.
Map 메소드
Map 요소 삽입(set()
)
- set(key,value)형태로 데이터를 삽입
let map = new Map();
map.set("1", 1);
map.set(2, "2");
map.set(true, true);
map.set(true, true);
console.log(map);
// {'1' => 1, 2 => '2', true => true}
caution
Map은 중복된 key값이 사용가능한가?
let map = new Map();
map.set("1", 1);
map.set(2, "2");
map.set(true, true);
map.set(true, 333);
console.log(map);
// {'1' => 1, 2 => '2', true => 333}
중복된 key값은 허용하지 않는다.
중복된 key값을 넣을 경우 맨 뒤의 중복된 key값의 value값으로 할당된다.
Map안에 있는 value값 가져오기(get()
)
- key값을 이용하여 value값을 반환
let map = new Map([
["1", 1],
["3", 4],
["hello", "world"],
]); // Map안에 2차원 배열로 넣어 생성하는 방식
console.log(map); // {'1' => 1, '3' => 4, 'hello' => 'world'}
map.get("1"); // 1
map.get("hello"); // "world"
map.get("world"); // undefined
Map안에 key가 존재하는지 확인(has()
)
true
,false
로 값을 반환
let map = new Map([
["안녕", "하세요"],
["1", 1],
]);
map.has("안녕"); // true
map.has("하세요"); //false
map.has("1"); //true
Map 요소를 삭제(delete()
)
- Map의 key를 이용하여 요소를 삭제하며, 반환값은
true
,false
이다.
let map = new Map([
["JJam", "Va"],
["Grid", "Flex"],
]);
map.delete("JJam"); //true
console.log(map); // {'Grid' => 'Flex'}
map.delete("Flex"); //false
console.log(map); // {'Grid' => 'Flex'}