[JS] value값으로 key값 찾기!

Mia:)·2021년 2월 7일
2

알고리즘공부

목록 보기
1/1
function topK(nums, k) {
  const map = new Map()
  const result = []
  for(const i of nums){
   map[i] = map[i] +1 ||1 
  }
  const array = Object.values(map).sort((a,b)=> b-a);
  for(let i=0; i< k ;i++){
    Object.keys(map).find(key => {
      if(map[key] === array[i]){     
        result.push(parseInt(key))
      }
    })
  }
  return result
}

저번부터 value값으로 key값을 찾고 싶은 경우가 있었는데, 방법을 찾지 못해서 우회하는 방법을 사용해왔었다. https://stackoverflow.com/questions/9907419/how-to-get-a-key-in-a-javascript-object-by-its-value
에서 답변을 보고 해결할 수 있었다!!

원본답변

function getKeyByValue(object, value) {
  return Object.keys(object).find(key => object[key] === value);
}

이 코드를 보고, key을 담으려면 object값을 넣고, 여기서 find 메서드를 사용해서, 각각의 object[key]값을 찾아서 key가 갖고 있는 value와 내가 키를 찾을 value를 비교하는 것!

  for(let i=0; i< k ;i++){
    Object.keys(map).find(key => {
      if(map[key] === array[i]){     
        result.push(parseInt(key))
      }
    })

이를 활용해서 value값으로 key값을 찾았다! key값은 string 타입임으로, parseInt 해주면 된다!!!

0개의 댓글