Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript map() 메서드로 중첩 객체(Nested Object)에 안전하게 접근하는 방법

배열 안에 객체가 중첩되어 있고, 그 안에 또 다른 객체가 들어 있는 경우가 있습니다. 이럴 때 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를 함께 사용하면 속성이 누락된 객체로 인한 오류 없이 중첩 구조를 안전하게 탐색할 수 있습니다.