[Javascript] 객체 value 값으로 key 값 찾기
April 06, 2024
key-value를 갖고 있는 객체에서 value 값으로 key 값을 찾는 방법을 알아보겠습니다.
key로 value를 찾기는 쉽지만, 그 반대는 직접 찾는 코드를 구현해야 합니다.
1. find()를 이용한 방법
아래와 같이 객체의 모든 value 값을 순회하면서, 특정 value 값을 찾고, 그 객체의 key를 리턴하도록 구현할 수 있습니다.
findKeyByValue(myObject, "c")
: myObject에서 value로 “c” 값을 갖고 있는 key 리턴Object.keys(obj)
: 객체에서 key 값들만 배열로 리턴keys.find((key) => obj[key] === searchValue)
: keys의 key 값들을 모두 순회하면서, find()의 함수의 결과가 true일 때, 그 key를 리턴
function findKeyByValue(obj, searchValue) {
const keys = Object.keys(obj);
const foundKey = keys.find((key) => obj[key] === searchValue);
return foundKey || null; // 해당 value를 가진 key를 찾지 못한 경우 null 리턴
}
let myObject = { 1: "a", 2: "b", 3: "c", 4: "d", 5: "e" };
let foundKey = findKeyByValue(myObject, "c");
console.log(foundKey);
foundKey = findKeyByValue(myObject, "d");
console.log(foundKey);
Output:
3
4
2. for문을 이용한 방법
find()
를 사용하는 방법과 동일한데, 대신 find를 사용하지 않고 for문으로 동일하게 동작하도록 구현하였습니다.
function findKeyByValue(obj, searchValue) {
for (const key in obj) {
if (obj.hasOwnProperty(key) && obj[key] === searchValue) {
return key;
}
}
return null; // 해당 value를 가진 key를 찾지 못한 경우
}
let myObject = { 1: "a", 2: "b", 3: "c", 4: "d", 5: "e" };
let foundKey = findKeyByValue(myObject, "c");
console.log(foundKey);
foundKey = findKeyByValue(myObject, "d");
console.log(foundKey);
Output:
3
4