JavaScript - 객체에서 value로 key 찾는 방법

Javascript의 객체에서 value로 key를 찾는 방법을 소개합니다.

1. Object.keys()와 find()를 이용하여 value로 key 찾기

일반적으로 value로 key를 찾으려면, 모든 key를 가져와서 key의 value와 찾으려는 value가 같은지 확인해야 합니다.

아래와 같이 Object.keys()find()를 이용하여 구현할 수 있습니다.

  • Object.keys()는 object의 모든 key를 배열로 리턴
  • find()는 배열의 모든 key를 순회하면서, 인자로 전달된 함수가 true일 때 key를 리턴
  • find()로 일치하는 값을 찾지 못하면 undefined 리턴
function getKeyByValue(obj, value) {
  return Object.keys(obj).find(key => obj[key] === value);
}


let myObj = { 1: 'a', 2: 'b', 3: 'c', 4: 'd'};

let key = getKeyByValue(myObj, 'c');
console.log(key);

key = getKeyByValue(myObj, 'a');
console.log(key);

key = getKeyByValue(myObj, "Java");
console.log(key);

Output:

3
1
undefined

2. Object에 value가 존재하는지 확인

getKeyByValue()에서 value를 찾지 못하면 undefined가 리턴됩니다. if문에서 결과를 undefined와 비교하면 value가 object에 존재하는지 확인할 수 있습니다.

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


let myObj = { 1: 'a', 2: 'b', 3: 'c', 4: 'd'};

if (getKeyByValue(myObj, "a") !== undefined) {
  console.log("Found 'a' value");
}

if (getKeyByValue(myObj, "Java") === undefined) {
  console.log("Not found 'Java' value");
}

Output:

Found 'a' value
Not found 'Java' value
Loading script...
codechachaCopyright ©2019 codechacha