再帰を使用してキーによって入れ子になった配列内のオブジェクトを検索するにはどうすればよいですか?

DDD
リリース: 2024-11-19 17:55:02
オリジナル
981 人が閲覧しました

How to Find Objects in Nested Arrays by Key Using 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) {
            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;
}
ログイン後にコピー

使用例

この関数を使用して、ID が 1 であるオブジェクトを検索してみましょう。ネストされた配列の例:

var myArray = [{
    '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': {
                    // ...
                }
            }]
        }]
    }]
}];

var result = getObject(myArray);
console.log(result); // prints the found object
ログイン後にコピー

以上が再帰を使用してキーによって入れ子になった配列内のオブジェクトを検索するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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