Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
迭代嵌套firebase对象-Javascript_Javascript_Jquery_Firebase_Firebase Realtime Database - Fatal编程技术网

迭代嵌套firebase对象-Javascript

迭代嵌套firebase对象-Javascript,javascript,jquery,firebase,firebase-realtime-database,Javascript,Jquery,Firebase,Firebase Realtime Database,如何遍历嵌套的firebase对象 Publications- | |-Folder1------ | |-hdgjg76675e6r- | | |-Name | | |-Author | |

如何遍历嵌套的firebase对象

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,不应作为函数调用