迭代嵌套firebase对象-Javascript
如何遍历嵌套的firebase对象迭代嵌套firebase对象-Javascript,javascript,jquery,firebase,firebase-realtime-database,Javascript,Jquery,Firebase,Firebase Realtime Database,如何遍历嵌套的firebase对象 Publications- | |-Folder1------ | |-hdgjg76675e6r- | | |-Name | | |-Author | |
Publications-
|
|-Folder1------
| |-hdgjg76675e6r-
| | |-Name
| | |-Author
| |
| |+-hdgjdsf3275e6k
| |+-hd345454575e6f
|+-Folder2
在出版物中我有文件夹,在文件夹中我有对象(包含.Name、Author等属性)
到目前为止,我一直在浏览文件夹
snapshot.forEach(function (snapshot) {
var key = snapshot.key();
var obj = snapshot.val();
console.log(key);
//output => Folder1 , Folder2 etc
});
当我打印obj时
console.log(obj);
它显示
如何遍历包含
hdgjg76675e6r
、hdgjdsf3275e6k
等的obj变量?如果您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
});
});
这棵树的深度会增加吗?如果不是,那么这里最好的解决方案就是执行双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;
});
});
在我看来,没有必要过度设计事物。以下是将对象对象转换为对象数组的简单方法:
var myObject = {key1: {name: 'hello'}, key2: {name: 'hello2'}};
var myArrayOfObject = Object.values(myObject);
console.log(myArrayOfObject);
// Result: (2) [Object, Object]
PS:您可以从ChromeDevTools右键单击对象>另存为临时变量来复制对象。它将打印类似于
temp1
,如果您在chrome控制台copy(temp1)
中编写,则可以将其粘贴到任何编辑器上;)谢谢你的提示,先生var key=snapshot.key,不应作为函数调用