ホームページ > ウェブフロントエンド > jsチュートリアル > 複雑な配列構造内で深くネストされたオブジェクトに効率的にアクセスするにはどうすればよいですか?

複雑な配列構造内で深くネストされたオブジェクトに効率的にアクセスするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-11 22:21:02
オリジナル
776 人が閲覧しました

How can I efficiently access a deeply nested object within a complex array structure?

配列内で深くネストされたオブジェクトを検索する

以下のような複雑なネストされたオブジェクトがあると想像してください。

[
    {
        "title": "some title",
        "channel_id": "123we",
        "options": [
            {
                "channel_id": "abc",
                "image": "http://asdasd.com/all-inclusive-block-img.jpg",
                "title": "All-Inclusive",
                "options": [
                    {
                        "channel_id": "dsa2",
                        "title": "Some Recommends",
                        "options": [
                            {
                                "image": "http://www.asdasd.com",
                                "title": "Sandals",
                                "id": 1,
                                "content": {}
                            }
                        ]
                    }
                ]
            }
        ]
    }
]
ログイン後にコピー

ID が 1 のオブジェクトを取得したいと考えています。各レベルを手動でナビゲートする代わりに、より良いアプローチを検討してみましょう。

Recursion to the Rescue

Recursion、関数がそれ自体を呼び出す場合、洗練されたソリューションが提供されます。次の関数は、ネストされたオブジェクトを反復処理します。

function getObject(theObject) {
    var result = null;
    if (theObject instanceof Array) {
        for (var i = 0; i < theObject.length; i++) {
            result = getObject(theObject[i]);
            if (result) {
                break;
            }
        }
    } else {
        for (var prop in theObject) {
            console.log(prop + ': ' + theObject[prop]);
            if (prop == 'id') {
                if (theObject[prop] == 1) {
                    return theObject;
                }
            }
            if (theObject[prop] instanceof Object || theObject[prop] instanceof Array) {
                result = getObject(theObject[prop]);
                if (result) {
                    break;
                }
            }
        }
    }
    return result;
}
ログイン後にコピー

この関数は配列とプロパティ配列を処理し、オブジェクト全体を走査して一致を見つけます。

デモと結論

関数をデモする更新された jsFiddle は次のとおりです: https://jsfiddle.net/FM3qu/7/.

結論として、再帰は、深くネストされたオブジェクトを走査し、特定のオブジェクトを取得する効率的な方法を提供します。基準に基づいて。再帰を活用することで、面倒な手動ナビゲーションを回避し、複雑な入れ子構造を簡単に処理できます。

以上が複雑な配列構造内で深くネストされたオブジェクトに効率的にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート