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 해주면 된다!!!