배열 안에 객체가 중첩되어 있고, 그 안에 또 다른 객체가 들어 있는 경우가 있습니다. 이럴 때 map() 메서드와 typeof 연산자를 함께 사용하면 각 요소를 순회하면서 내부 속성에 안전하게 접근할 수 있습니다.
중첩 객체 예시
다음과 같이 중첩된 객체가 있다고 가정해 보겠습니다.
var details = [
{
id:"101",
firstName:"John",
lastName:"Smith",
age:25,
countryName:"US",
subjectDetails: {
subjectId:"Java-101",
subjectName:"Introduction to Java"
},
},
{
"uniqueId": "details_10001"
}
]위 배열에서 첫 번째 객체는 subjectDetails라는 중첩 객체를 포함하고 있지만, 두 번째 객체에는 이 속성이 존재하지 않습니다. 따라서 값을 읽기 전에 해당 속성이 실제로 정의되어 있는지 먼저 확인하는 것이 안전합니다.
map()과 typeof를 활용한 접근 방법
map() 메서드는 배열의 모든 요소에 대해 콜백 함수를 한 번씩 실행합니다. 여기에 typeof를 조합하면 subjectDetails 속성이 undefined인지 검사한 뒤, 값이 존재하는 경우에만 내부 데이터를 처리하도록 만들 수 있습니다.
예제 코드
var details = [
{
id:"101",
firstName:"John",
lastName:"Smith",
age:25,
countryName:"US",
subjectDetails: {
subjectId:"Java-101",
subjectName:"Introduction to Java"
},
},
{
"uniqueId": "details_10001"
}
]
details.map((nestedObject)=>{
if (typeof nestedObject.subjectDetails != 'undefined')
console.log("The subject Name="+nestedObject.subjectDetails.subjectName);
})프로그램 실행 방법
Node.js 환경에서 위 프로그램을 실행하려면 터미널에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo119.js라고 가정합니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력이 나타납니다.
PS C:\Users\Amit\JavaScript-code> node demo119.js The subject Name=Introduction to Java
두 번째 객체에는 subjectDetails 속성이 없으므로 if 조건문이 false가 되어 건너뛰고, 결과적으로 첫 번째 객체의 과목 이름인 Introduction to Java만 화면에 출력됩니다. 이처럼 map()과 typeof를 함께 사용하면 속성이 누락된 객체로 인한 오류 없이 중첩 구조를 안전하게 탐색할 수 있습니다.