配列内で深くネストされたオブジェクトを検索する
以下のような複雑なネストされたオブジェクトがあると想像してください。
[ { "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 サイトの他の関連記事を参照してください。