2017-07-19 16 views
2

ネストされたfirebaseオブジェクトを反復処理する方法。出版物でネストされたfirebaseオブジェクトを反復する - Javascript

Publications- 
      | 
      |-Folder1------ 
      |    |-hdgjg76675e6r- 
      |    |    |-Name 
      |    |    |-Author 
      |    | 
      |    |+-hdgjdsf3275e6k 
      |    |+-hd345454575e6f 
      |+-Folder2 

私はフォルダを持っているとフォルダに、私は私が今までフォルダを反復しているオブジェクト(名前、著者などのプロパティを含む)

を持っています。

snapshot.forEach(function (snapshot) { 
    var key = snapshot.key(); 
    var obj = snapshot.val(); 
    console.log(key); 
    //output => Folder1 , Folder2 etc 
}); 

私はがobj

console.log(obj); 

それはそれはhdgjg76675e6r含まれているとして、私はOBJ変数を反復処理するにはどうすればよい

enter image description here

表示、印刷、hdgjdsf3275e6kなど、さらに?

for(var key in obj) { 
    console.log(obj[key]); 
} 

か、あなたのスナップショットで再びforEachを使用することができます:

folderSnapshot.forEach(function (objSnapshot) { 
    objSnapshot.forEach(function (snapshot) { 
     var val = snapshot.val(); 
     console.log(val); // Should print your object 
    }); 
}); 

答えて

3

あなたobjは普通のjavascriptオブジェクトは、あなただけのforループの簡単なを使用することができますです深さの増加?そうでない場合は、ここで最善の解決策はdouble forループを行うことです。

snapshot.forEach(function (snapshot) { 
    var key = snapshot.key(); 
    var obj = snapshot.val(); 
    console.log(key); 
    //output => Folder1 , Folder2 etc 

    obj.forEach(function (book) { 
     var title = book.title; 
     var author = book.author; 
    }); 
}); 

私の意見では、過剰なエンジニアリングは必要ありません。あなたがオブジェクトの配列にオブジェクトのあなたのオブジェクトを取得する方法

+0

グレートおかげで、それを解決しました。 :) –

+1

PS:chrome devtoolsからオブジェクトをコピーして、右クリックして>一時変数として保存することができます。 'temp1'のようなものが出力されます。もしあなたが' chrome console 'copy(temp1)に書き込むと、エディタに貼り付けることができます;) –

+1

チップスさんに感謝します。 :) –

1

HERESに簡単な方法:

var myObject = {key1: {name: 'hello'}, key2: {name: 'hello2'}}; 
var myArrayOfObject = Object.values(myObject); 

console.log(myArrayOfObject); 
// Result: (2) [Object, Object] 
関連する問題