>웹 프론트엔드 >JS 튜토리얼 >점 표기법 문자열을 사용하여 중첩된 JavaScript 개체 속성에 효율적으로 액세스하는 방법은 무엇입니까?

점 표기법 문자열을 사용하여 중첩된 JavaScript 개체 속성에 효율적으로 액세스하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-30 10:02:11579검색

How to Efficiently Access Nested JavaScript Object Properties Using Dot Notation Strings?

점 표기법 문자열을 사용하여 객체 하위 속성에 액세스

JavaScript에서는 객체 속성에 액세스하는 여러 가지 방법이 있습니다. 그러나 문자열 경로를 사용하여 중첩된 속성에 액세스하는 것은 어려울 수 있습니다.

다음과 같은 개체가 있는 경우

var r = { a:1, b: { b1:11, b2: 99}};

경로 문자열을 지정하여 값 99에 액세스하려는 시나리오를 고려해보세요. var s = "b.b2". r.b.b2 또는 r['b']['b2']와 같은 전통적인 방법이 작동하지만 더 간결한 표기법을 사용하는 것이 더 나을 수도 있습니다.

순진하지만 효율적인 솔루션

function getDescendantProp(obj, desc) {
    var arr = desc.split(".");
    while(arr.length && (obj = obj[arr.shift()]));
    return obj;
}

이 함수는 문자열을 점으로 반복적으로 분할하고 객체 구조를 탐색하여 궁극적으로 요청된 결과를 반환합니다. property.

사용 예

console.log(getDescendantProp(r, "b.b2"));
//-> 99

확장

제공된 함수는 중첩된 개체 속성에 대한 액세스만 지원합니다. 보다 고급 사용법을 위해 배열 인덱스도 처리하도록 수정할 수 있습니다.

function advancedGetDescendantProp(obj, desc) {
    var arr = desc.split(".");
    while(arr.length) {
        let key = arr.shift();
        if (isNaN(key)) {
            obj = obj[key];
        } else {
            obj = obj[parseInt(key)];
        }
        if (!obj) return undefined;
    }
    return obj;
}

위 내용은 점 표기법 문자열을 사용하여 중첩된 JavaScript 개체 속성에 효율적으로 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.