Po_tta_tt0
콩심콩 팥심팥 🌱
Po_tta_tt0
전체 방문자
오늘
어제
  • 분류 전체보기 (266)
    • 🐛 회고 (14)
    • 💭 생각 (2)
    • 🤸‍♀️ 내 프로젝트 (16)
      • FISH-NEWS (8)
      • MBTI 과몰입 테스트 (2)
      • twitter clonecoding with TS (4)
      • pilzagenda (2)
    • 👨‍👩‍👧‍👦 팀 프로젝트 (2)
      • 피우다 프로젝트 (0)
      • SEMO(세상의 모든 모임) (1)
      • 마음을 전하는 텃밭 (1)
      • Stackticon (0)
    • 👨‍💻 CS지식 (11)
    • ✍ 공부 (94)
      • JavaScript (21)
      • TypeScript (39)
      • Html (0)
      • CSS (2)
      • React (18)
      • NextJS (7)
      • Vue (1)
      • Python (1)
      • Django (0)
      • 개발환경 & 그 외 (2)
    • 🏄‍♀️ 코딩테스트 (99)
      • 🐍 Python (99)
    • 🐙 Git & GitHub (3)
    • 📑 오류기록 (8)
    • 📚 우리를 위한 기록 (9)
    • 수업 (3)
    • 강의 등 (2)
    • 👩‍🎓 SSAFY (0)
    • 👋 우테코 (0)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • React
  • 파이썬 다익스트라
  • bfs
  • DP
  • react-router-dom
  • 구현
  • 파이썬
  • 플로이드 워셜
  • BFS + DP
  • 이분탐색
  • 파이썬 감시 피하기
  • 자바스크립트
  • 시뮬레이션
  • 문자열
  • Next.js
  • js
  • 백준 숨바꼭질
  • 백준
  • 백준 파이썬
  • dfs

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Po_tta_tt0

콩심콩 팥심팥 🌱

✍ 공부

[ Javascript / React / typescript]객체 value값으로 key 값 찾기.

2022. 2. 28. 20:48
반응형

 

2022 대선 공약 자가진단 웹을 만들면서 value 값으로 key를 찾을 일이 있었다.

 

 

     const frequency: number[] = Object.values(obj);
     // 1. 원하는 객체의 '값'만 뽑아서 숫자형으로만 이루어진 frequency라는 배열을 만든다(값이 숫자였기 때문에 + typescript였기 때문에 숫자형이라고 표시함)
      
      const freCandidate = Object.keys(obj).filter((key: string) => {
        return obj[key] === Math.max(...frequency);
      });
      // 2. 객체 안에서 가장 큰 key 값을 가진 value를 가져오길 원했기 때문에 이렇게 코드를 짰다
      // obj에서 key만 뽑아서 filter을 쓴다(find도 상관없지만 같은 점수가 2번 이상 나올 경우를 대비해 filter을 사용했다)
      // key값을 돌면서 obj[key] 즉 각 key의 value가,
      // 1번에서 선언했던 frequency 중 가장 큰 수와 같을 시 return한다

: number[] 부분은 typescript를 이용했기 때문에 적어주었다.

 

이해가 되셨나요?

 

 

 

조금 더 간단하게 설명을 해보자면

 

const obj  ={"a": 2, "b": 1. "c":3. "d":1. "e":0}

가 있다고 해봅시다.

 

문제:  우리가 원하는 것은 여기서 가장 큰 점수를 가진 알파벳을 뽑는 것입니다.

 

1. 가장 큰 점수를 뽑은 다음에(value)

2. 가장 큰 점수를 가진 value의 key를 구하면

알파벳이 나올 것입니다.

 

 

따라서

1.

Object.values(obj) 를 이용해 object를 돌면서 value로만 이루어진 array를 만들어냅니다.

const frequency = Object.values(obj)

 

여기서 가장 큰 점수를 뽑아봅니다

 

const max = Math.max(...frequency)

 

 

 

2.

const selected = Object.keys(obj).filter((key) => {
  return obj[key] === max;
});

selected는 Object의 key를 filter을 이용해 돌면서,

obj[key] 즉, 어떠한 key의 value (key에 c가 들어갔다면 3)와 1번에서 구한 max값을 비교해

같은 값만 return합니다. 

 

 

 

 

 

 

도움

 

https://velog.io/@try_catch/JS-value%EA%B0%92%EC%9C%BC%EB%A1%9C-key%EA%B0%92-%EC%B0%BE%EA%B8%B0

 

 

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

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

velog.io

 

 

반응형

'✍ 공부' 카테고리의 다른 글

[ React / Typescript ] typeScript에서 객체 key에 접근하는 방법ERROR! : Element implicitly has an 'any' type because expression of type 'string' can't be used to index type  (0) 2022.02.28
[react] .process.env.REACT_APP_KEY undefined  (0) 2021.12.09
    '✍ 공부' 카테고리의 다른 글
    • [ React / Typescript ] typeScript에서 객체 key에 접근하는 방법ERROR! : Element implicitly has an 'any' type because expression of type 'string' can't be used to index type
    • [react] .process.env.REACT_APP_KEY undefined
    Po_tta_tt0
    Po_tta_tt0
    감자의 코딩하는 블로그 콩심은데 콩나고 팥심은데 팥난다

    티스토리툴바