Map 객체 key 별로 sort하기

버건디·2023년 4월 19일
0

자바스크립트

목록 보기
29/31
post-thumbnail
  let hash = new Map();

  hash.set(1, 0.125);
  hash.set(2, 0.5);
  hash.set(3, 0.5);
  hash.set(4, 0.1);
  hash.set(5, 0);

console.log(hash); 
//Map(5) { 1 => 0.125, 2 => 0.5, 3 => 0.5, 4 => 0.1, 5 => 0 }

만약에 이런식으로 key와 value가 나뉘어져 있는 map 객체가 있다고 가정했을때,

값이 높은 순서대로 key 별로 나누어주고 싶다면 ?

- 스프레드 연산자와 Map.entries() 사용하기

entries 메서드는 map 객체에 있는 key와 value를 담아서 iterator 로 리턴해주는데, 스프레드 연산자를 사용해주어서 배열화 해준다.

  let hash = new Map();

  hash.set(1, 0.125);
  hash.set(2, 0.5);
  hash.set(3, 0.5);
  hash.set(4, 0.1);
  hash.set(5, 0);

  let answer = [...hash.entries()]
    .sort((a, b) => b[1] - a[1])
    .map((num) => num[0]);
//[2, 3, 1, 4, 5]

이런식으로 배열화를 해준후에, sort메서드를 통해서 내림차순 정렬을 해준후 map을 통해 그에 맞는 key값만 받아온다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글