Map 활용 사례

박경준·2023년 4월 26일
0

지표 관리

목록 보기
3/3

Map vs Object

객체로 이루어진 배열을 객체로 바꾸어야하는 상황

[{id: 2, name: 'pkj'}, {id: 1, name: 'zzz'}] -> {2: 'pkj', 1: 'zzz'}

근데 여기서 배열은 name의 내림차순으로 정렬되어 있는데, 이 순서를 객체에서도 그대로 가져가고 싶었지만
key를 기준으로 내림차순 정렬됨 (순서를 보장할 수 없음.)

const arr = [{id: 2, name: 'pkj'}, {id: 1, name: 'zzz'}];
const map = new Map(arr.map(obj => [obj.id, obj.name]));
  • Map이라는 데이터 형을 사용하면 순서를 보장할 수 있다.

Map과 Object의 차이

  1. 키 순서:
    객체는 순서가 지정되지 않습니다. 즉, 키가 객체에 추가되는 순서가 액세스되는 순서와 동일하지 않을 수 있습니다. 반면에 맵은 삽입 순서에 따라 정렬됩니다. 즉, 키-값 쌍이 맵에 추가되는 순서가 유지됩니다.
  2. 키 유형:
    객체에서 키는 문자열 또는 기호여야 하지만 맵에서 키는 개체 및 함수를 포함한 모든 데이터 유형일 수 있습니다.
const myMap = new Map();
const myFunction = () => console.log("Hello, world!");
myMap.set(myFunction, "This is the value for myFunction");
console.log(myMap.get(myFunction)); // Output: "This is the value for myFunction"
  1. 반복:
    객체는 for...in 루프 또는 Object.keys(), Object.values() 및 Object.entries()와 같은 Object 메서드를 사용하여 반복할 수 있습니다. for...of 루프 또는 Map.keys(), Map.values() 및 Map.entries()와 같은 Map 메서드를 사용하여 맵을 반복할 수 있습니다.
  2. 크기:
    객체에는 크기 속성이나 메서드가 없으므로 객체의 키 수는 수동으로 결정해야 합니다. 맵에는 맵의 키-값 쌍 수를 반환하는 크기 속성이 있습니다.
  3. 성능:
    일반적으로 키-값 쌍을 자주 추가하고 제거하는 경우 맵이 더 빠르고 키-값 쌍에 자주 액세스하는 경우 객체가 더 빠릅니다.
  4. 사용 사례:
    객체는 일반적으로 문자열 키가 있는 관련 속성 모음을 나타내는 데 사용되는 반면, 맵은 문자열이 아닌 키 또는 순서가 지정된 반복을 사용해야 하는 고급 사용 사례에 유용합니다.

결론 : 객체의 순서를 보장하고 싶을 경우 map 데이터 형을 사용하자.

profile
빠굥

0개의 댓글