2017-07-19 119 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); 

它顯示

enter image description here

我如何通過OBJ變量重複,因爲它包含hdgjg76675e6rhdgjdsf3275e6k等,並進一步?

回答

3

obj僅僅是一個正常的JavaScript對象,你可以使用一個簡單的for循環:

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 
    }); 
}); 
+0

十分感謝,這解決了它。 :) –

+1

PS:你可以從chrome devtools複製一個對象,右鍵單擊它>保存爲臨時變量。它會打印類似'temp1'的東西,如果你在chrome控制檯'copy(temp1)'中寫入,你可以將它粘貼到任何編輯器上;) –

+1

感謝您的提示先生。 :) –

2

請問樹深度增加?如果沒有,那麼最好的解決方案就是做一個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; 
    }); 
}); 

在我看來,沒有必要過度設計一些東西。

1

繼承人簡單的方法,你如何能得到你的對象的對象對象數組:

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

console.log(myArrayOfObject); 
// Result: (2) [Object, Object]