JavaScript에서 중첩(nested) 객체 안에 있는 특정 값이 어느 키에 속하는지 찾아야 할 때가 있습니다. 이 글에서는 for...in 루프와 includes() 메서드를 활용하여 중첩 객체에서 원하는 키 값을 추출하는 방법을 알아보겠습니다.
중첩 객체 생성하기
먼저 예제에 사용할 중첩 객체를 생성합니다.
var details = {
"teacherDetails":
{
"teacherName": ["John", "David"]
},
"subjectDetails":
{
"subjectName": ["MongoDB", "Java"]
}
}위 객체는 두 개의 상위 키(teacherDetails, subjectDetails)를 가지며, 각 키 안에 또 다른 객체와 배열이 중첩되어 있는 구조입니다.
키 값 추출하기
이제 특정 값(예: "Java")이 포함된 위치의 상위 키와 하위 키를 추출해 보겠습니다. 다음은 전체 코드입니다.
예제
var details = {
"teacherDetails":
{
"teacherName": ["John", "David"]
},
"subjectDetails":
{
"subjectName": ["MongoDB", "Java"]
}
}
var objectName, nestedObject;
var name = "Java";
for(var key in details){
for(var secondKey in details[key]){
if(details[key][secondKey].includes(name)){
objectName = key;
nestedObject = secondKey;
}
}
}
console.log(objectName + ', ' + nestedObject);코드 설명
- 바깥쪽
for...in루프는 최상위 키(teacherDetails,subjectDetails)를 하나씩 순회합니다. - 안쪽
for...in루프는 각 상위 키 안에 있는 하위 키(teacherName,subjectName)를 순회합니다. includes()메서드로 해당 배열에 찾고자 하는 값("Java")이 존재하는지 확인합니다.- 값이 존재하면 그 시점의 상위 키와 하위 키를 각각 변수에 저장합니다.
프로그램 실행하기
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 사용합니다.
node fileName.js
여기서는 파일 이름이 demo96.js라고 가정하겠습니다.
출력 결과
프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
PS C:\Users\Amit\JavaScript-code> node demo96.js subjectDetails, subjectName
결과를 보면 찾고자 하는 값 "Java"가 subjectDetails 키 아래의 subjectName 배열에 포함되어 있음을 확인할 수 있습니다. 이처럼 중첩 루프와 includes()>를 조합하면 복잡한 객체 구조에서도 원하는 키를 손쉽게 찾아낼 수 있습니다.