Map Set

lim1313·2021년 7월 31일
0

TILPLUS

목록 보기
1/40
post-thumbnail

Map

Map 객체는 데이터를 수집하여 활용하기 위한 객체이다. "키"와 "값"의 쌍을 Map 객체 안에 저장하여 사용한다.
Map 안에서 키는 고유한 값이며, 키와 값의 데이터 타입에는 제한이 없다.

Map vs Object

  1. Object는 키로 문자열만 사용할 수 있지만, Map의 키 타입에는 제한이 없다.
  2. Map 객체는 해시 테이블을 활용하기 때문에 데이터 검색 속도가 빠르다.
  3. Map 객체는 데이터 개수를 size 프로퍼티로 구할 수 있지만, Object 객체는 수동으로 계산하여야 한다.

메소드

  • new Map() – 맵을 만듭니다.

  • map.set(key, value) – key를 이용해 value를 저장.

    map[key]는 Map을 쓰는 바른 방법이 아니다.
    map[key] = 2로 값을 설정하는 것 같이 map[key]를 사용할 수 있지만, 이 방법은 map을 일반 객체처럼 취급하게 된다. 따라서 여러 제약이 생기게 된다.
    map을 사용할 땐 map전용 메서드 set, get 등을 사용해야만 한다 .

  • map.get(key) – key에 해당하는 값을 반환. key가 존재하지 않으면 undefined를 반환.

  • map.has(key) – key가 존재하면 true, 존재하지 않으면 false를 반환.

  • map.delete(key) – key에 해당하는 값을 삭제.

  • map.clear() – 맵 안의 모든 요소를 제거.

  • map.size – 요소의 개수를 반환.

  • map.keys() – 각 요소의 키를 모은 반복 가능한(iterable, 이터러블) 객체를 반환.

  • map.values() – 각 요소의 값을 모은 이터러블 객체를 반환.

  • map.entries() – 요소의 [키, 값]을 한 쌍으로 하는 이터러블 객체를 반환. 이 이터러블 객체는 for..of반복문의 기초로 쓰인다.

let recipeMap = new Map([
    ['cucumber', 500],
    ['tomatoes', 350],
    ['onion',    50]
  ]);
  console.log(recipeMap);
  console.log(recipeMap.keys());
  console.log(recipeMap.values());
  console.log(recipeMap.entries());
  
  // 키(vegetable)를 대상으로 순회합니다.
  for (let vegetable of recipeMap.keys()) {
    console.log(vegetable); // cucumber, tomatoes, onion
  }
  
//결과

Map(3) {"cucumber" => 500, "tomatoes" => 350, "onion" => 50}

MapIterator {"cucumber", "tomatoes", "onion"}
MapIterator {500, 350, 50}
MapIterator {"cucumber" => 500, "tomatoes" => 350, "onion" => 50}

cucumber
tomatoes
onion

Set

Set 객체는 중복되지 않는 유일한 데이터를 수집하여 활용하기 위한 객체이다.
Set 값의 데이터 타입에는 제한이 없다.
객체 타입, 원시 타입 모두 가능하다.

let set1 = new Set();
console.log(set1) 
//-> Set { }
let set2 = new Set(["oranges", "apples", "bananas"]);
// -> Set(3) {"oranges", "apples", "bananas"}
let set3 = new Set();

let john = { name: "John" };
let pete = { name: "Pete" };
let mary = { name: "Mary" };

set3.add(john);
set3.add(pete);
set3.add(mary);

//Set {{name: "John"},{name: "Pete"},{ name: "Mary" }}

메소드

let set = new Set();
  • set.add(value) – 값을 추가하고 셋 자신을 반환합니다.

  • set.delete(value) – 값을 제거합니다. 호출 시점에 셋 내에 값이 있어서 제거에 성공하면 true, 아니면 false를 반환합니다.

  • set.has(value) – 셋 내에 값이 존재하면 true, 아니면 false를 반환합니다.

  • set.clear() – 셋을 비웁니다.

  • set.size – 셋에 몇 개의 값이 있는지 세줍니다.

  • set.values()

  • set.keys()

Set에서 values()과 keys()는 같다.

forEach, for..of

  • for..of
    호출되는 값은 value이다.
for(let value of set1){
	console.log(value)
}
  • forEach
set1.forEach((value1, value2, set) => {
  console.log(value1);
});
profile
start coding

0개의 댓글