ホームページ >ウェブフロントエンド >jsチュートリアル >ドット表記文字列を使用してネストされた JavaScript オブジェクトのプロパティに効率的にアクセスする方法

ドット表記文字列を使用してネストされた JavaScript オブジェクトのプロパティに効率的にアクセスする方法

Susan Sarandon
Susan Sarandonオリジナル
2024-11-30 10:02:11640ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。