1. ホーム
  2. javascript

[解決済み] ネストされた配列の深い部分のキーで検索する

2023-03-28 22:07:57

質問

あるオブジェクトがあるとします。

[
    {
        '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のオブジェクトを見つけたいのですが、このような関数はありますか?私はUnderscoreの _.filter メソッドを使うことができますが、私はトップから始めて下にフィルタリングしなければなりません。

どのように解決するのですか?

再帰はあなたの友人です。プロパティ配列を考慮し、関数を更新しました。

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を更新しました。 http://jsfiddle.net/FM3qu/7/